Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
ASP.NET

How to Fix the NReco PdfGenerator “The Pipe Has Been Ended” Error

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“The pipe has been ended” is usually a symptom, not the root cause. In the documented ASP.NET/IIS case, NReco.PdfGenerator lost communication with its external wkhtmltopdf.exe renderer after that process failed. The server’s Windows event log identified an executable fault involving MSVCP120.dll (exception code 0xc0000135).

Start with the child-process fault, then verify IIS process architecture and native runtime dependencies. Do not begin by changing random NReco settings or copying DLLs from another computer. The steps below separate what the historical report established from prudent, general IIS isolation work.

What the error actually tells you

NReco’s HtmlToPdfConverter.GeneratePdfInternal communicates with a separate rendering executable. If that executable exits, crashes, cannot load a native module, or is terminated before NReco finishes reading and writing through the pipe, the managed code can surface “The pipe has been ended.” The wording describes the failed communication channel; by itself it does not identify whether the cause was a missing DLL, wrong bitness, permissions, a bad input page, or another process failure.

A Stack Overflow question, asked on April 22, 2015 and modified August 2, 2017, records this exact local-versus-server pattern. The report names wkhtmltopdf.exe version 0.12.2.1, an MSVCP120.dll fault, and exception code 0xc0000135. One answer says enabling a 32-bit application configuration and installing the matching 32-bit C++ runtime fixed that deployment; another answer says the asker made msvcp120.dll and msvcr120.dll available in the application’s bin directory. Those are individual historical workarounds, not current vendor instructions. See the original report at Stack Overflow.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Epson EcoTank ET-2800 Wireless Color All-in-One Supertank Printer - Black
  • INNOVATIVE CARTRIDGE-FREE PRINTING — No more dealing with lots of tiny ink cartridges; With this wireless document and photo printer each ink bottle set is equivalent to about 90 individual cartridges²
  • LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; When you choose this combination printer, scanner and copier you can print up to 4,500 pages black/7,500 color³
  • COLOR PRINTING — Up to 2 years of ink in the box4 (and with every replacement ink set) for fewer out-of-ink frustrations
  • ZERO CARTRIDGE WASTE — By using an Epson EcoTank printer you can help reduce the amount of cartridge waste ending up in landfills
  • HOME PRINTER DESIGNED FOR RELIABILITY — The Epson EcoTank ET-2800 All-in-One Supertank Color Printer creates vivid, detailed prints and documents thanks to Micro Piezo Heat-Free Technology; Fire off 10 ISO pages per minute1 to easily finish large jobs
Evidence What it supports What it does not prove
Pipe exception from GeneratePdfInternal The renderer communication ended unexpectedly. It does not name the underlying failure.
Windows event log names wkhtmltopdf.exe and MSVCP120.dll The external process failed while loading or running a native dependency in that case. Every installation has the same missing module.
32-bit runtime fixed the reported 32-bit deployment Worker-process and dependency architecture must match. Switching every server to 32-bit is universally correct.
DLLs placed in the application directory resolved the asker’s issue The process could then locate the required files in that environment. Blindly copying DLLs is a supported deployment policy.

Fast diagnostic sequence

  1. Capture the complete failure. Save the full exception, inner exception, URL or HTML input, NReco configuration, and timestamp. The pipe text is less useful than the first child-process error.
  2. Check the server’s Application event log. Look for an error at the same time as the request. Record the faulting executable, module name, exception code, and any “side-by-side” or loader message.
  3. Identify the actual worker-process bitness. Check the IIS application pool’s Enable 32-Bit Applications setting and confirm that the running worker process matches it. A 64-bit Windows installation can run a 32-bit application pool.
  4. Verify the native runtime for the deployed renderer. Install the supported runtime architecture required by the executable and your deployment policy. Do not infer the requirement from the operating system’s bitness alone.
  5. Retest with a minimal input. Use a simple, known-good HTML page on the same server. This separates process startup problems from page-specific JavaScript, fonts, network calls, or malformed markup.
  6. Run under the real IIS identity. A successful test from Visual Studio or an administrator account does not prove that the application-pool identity can execute the renderer or write to its temporary and output locations.

1. Inspect Windows event logs before changing settings

Open Event Viewer and go to Windows Logs → Application. Filter or sort around the request time, then inspect entries whose source is an application error, Windows Error Reporting, or a loader-related service. Record:

  • the faulting application, such as wkhtmltopdf.exe;
  • the faulting module, such as MSVCP120.dll;
  • the exception code (the historical report shows 0xc0000135);
  • the executable path and, if shown, the process architecture; and
  • any message that names a missing or incompatible assembly or runtime.

Also enable whatever NReco or application logging you already use so that the renderer’s exit information and standard error are retained. If Event Viewer shows no child-process fault, treat that as an unresolved branch rather than proof that the renderer is healthy: check the application log, process permissions, antivirus events, and the exact executable path next.

2. Match IIS architecture to the renderer and runtime

Check the application-pool setting

In IIS Manager, open Application Pools, select the pool serving the site, choose Advanced Settings, and inspect Enable 32-Bit Applications. Compare that setting with the architecture of the wkhtmltopdf.exe shipped with the application and with the native runtime installed for it.

The historical accepted answer describes a 32-bit application running on a 64-bit server. Installing the 32-bit C++ runtime and running the site in the required 32-bit mode solved that user’s failure. Apply the same reasoning to your deployment, but confirm the executable and dependency requirements first. A 64-bit worker cannot load a 32-bit in-process native dependency, and enabling 32-bit mode is not a general repair for a genuinely 64-bit renderer.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Confirm the process you are actually testing

Recycle the relevant pool after changing architecture, then reproduce one request. Use Task Manager’s Details view or your approved process-monitoring tool to verify that the expected worker process and renderer are being launched. If multiple sites or pools use different copies of wkhtmltopdf.exe, check the path for the failing site instead of assuming they share one installation.

Rank #2
Sale
Epson EcoTank Photo ET-8550 Wireless Wide-Format All-in-One Tank Printer
  • CARTRIDGE-FREE PRINTING — Print lab-quality photos, graphics and creative projects; Get vibrant colors and sharp text with Epson's high-accuracy printhead and Claria ET Premium 6-color inks
  • INK BOTTLES — Save on photos1 and creative projects with affordable in-house printing; All-in-one printer allows you to print 4" x 6" photos for about 4 cents each vs. 40 cents with traditional ink cartridges1
  • LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; Printer, scanner and copier lets you print up to 6,200 color pages³
  • PRINT FOR LONGER — Up to 2 years of ink in the box² (and with every replacement ink set) for fewer out-of-ink frustrations with this wireless printer
  • ZERO CARTRIDGE WASTE — Epson EcoTank printer helps reduce the amount of cartridge waste ending up in landfills; Cartridge-free printer uses high-yield ink bottles; Each replacement ink bottle set is equivalent to about 100 individual ink cartridges⁴

3. Resolve native dependency failures safely

Names such as MSVCP120.dll and msvcr120.dll point to native C/C++ runtime files. The historical report says those files were made accessible from the application’s bin directory, but that is not a universal recommendation. Copying an arbitrary DLL downloaded from the web can introduce an incompatible or tampered binary and can leave servicing unclear.

  1. Identify the exact executable that failed and the architecture it requires.
  2. Use the supported Microsoft or organizational software-distribution channel for the corresponding runtime, matching the required architecture.
  3. Install it under your normal server change-control process, then recycle the application pool.
  4. Only use application-local deployment when the runtime vendor and your application’s deployment policy explicitly support it; document the file version, source, and servicing owner.
  5. Retest and verify that the event log no longer reports the loader failure.

If the event log names a different module, troubleshoot that module rather than adding the two DLL names from the old report. A missing font, graphics library, or another native component can produce the same high-level pipe symptom.

4. Separate renderer startup from page-content failures

Use a minimal local page

Create a tiny HTML file or data string containing plain text and no external resources. Generate a PDF from that input on the server under the same application identity. If it fails before any page content is involved, concentrate on process launch, architecture, dependencies, permissions, and temporary directories.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Add complexity one variable at a time

When the minimal case succeeds, add the real URL, stylesheets, images, fonts, JavaScript, authentication headers, and redirects incrementally. A page that never finishes loading, requires an unavailable network route, or triggers renderer-specific JavaScript can fail after the process starts. Capture the exact input and the step at which the failure returns.

Check URL and resource reachability from the server

“Works in my browser” may mean the developer’s workstation can resolve a hostname or access an authenticated resource that the IIS server cannot. Test DNS, proxy rules, firewall egress, TLS trust, and application authentication from the server’s network context. Keep this branch separate from a loader error shown in Event Viewer.

Rank #3
HP Smart Tank 5000 Wireless All-in-One Ink Tank Printer, Scanner, Copier with 2 Years of Ink Included, Best-for-Home, Cartridge-Free, Refillable and AI-Enabled. (5D1B6A)
  • SET IT UP ONCE AND PRINT WITH CONFIDENCE. No complicated maintenance. Just easy, reliable printing you can count on.
  • INK FOR YEARS. NOT MONTHS. Up to 2 years of ink included. Get thousands of pages of cartridge-free printing. More pages, less hassle
  • KEEPS PRINTING WELL AFTER COMPETITORS HAVE QUIT. No complex maintenance. Sharper text, richer colors.[2] Only with HP Smart Tank
  • PREMIUM SUPPORT - Strong technical expertise to solve issues faster
  • THE LAST PRINTER YOU'LL EVER NEED. Enjoy years of refillable, cartridge-free printing.

5. Verify identity, paths, and temporary storage

These are general IIS checks rather than conclusions from the cited Stack Overflow case. Confirm that the application-pool identity can:

  • execute the deployed wkhtmltopdf.exe and read its adjacent files;
  • read templates, CSS, images, fonts, and any custom configuration;
  • create and delete temporary files in the directory used by NReco or the application; and
  • write the final PDF to the destination selected by your code.

Use absolute, known paths while diagnosing. Log the resolved executable path, current working directory, temporary directory, and output path. Avoid granting broad write access to the entire site directory; grant only the minimum rights to dedicated folders and then remove diagnostic permissions that are no longer needed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

6. Retest under production-like conditions

After correcting a dependency or architecture mismatch, recycle the pool and make several requests using the same site binding, identity, environment variables, and input that failed. A test from an elevated console can hide permission problems. Keep the event-log entry, renderer version, runtime package version, pool architecture, and result together in the deployment record so a later server rebuild can reproduce the working state.

If failures occur only under concurrent load, capture timestamps and process IDs and check whether the renderer is being terminated by pool recycling, an antivirus policy, a job timeout, or resource exhaustion. Do not “fix” that pattern by indefinitely increasing request timeouts; first establish whether the child process is crashing or being deliberately stopped.

Common scenarios and the next check

Symptom Most useful next check Safe response
Works locally, fails immediately on IIS Application event log and renderer path Find the child-process fault before changing PDF options.
Event log names a runtime DLL Worker and executable architecture; installed runtime architecture Install the supported matching runtime through normal change control.
Minimal HTML fails too Launch permission, executable path, temp directory, native dependencies Keep page-content debugging out of this branch.
Minimal HTML succeeds but the real URL fails Server-side DNS, proxy, TLS, authentication, resources, and scripts Add inputs incrementally and log the first failing resource.
Only one pool or site fails That pool’s bitness, identity, environment, and executable copy Compare configuration with a working site rather than the whole server.
Failure appears during deployment changes Pool recycle, antivirus, file lock, and package contents Check deployment and security logs for a process termination.

What not to do

  • Do not treat the pipe wording as a diagnosis or repeatedly retry it without collecting the child-process error.
  • Do not switch the entire server to 32-bit mode without confirming which executable and runtime require it.
  • Do not download DLLs from an unknown site or replace system files by hand.
  • Do not compare only with a developer workstation; compare identities, paths, architecture, runtime packages, and network access.
  • Do not claim that the historical wkhtmltopdf version is a current recommendation. The 0.12.2.1 number belongs to the 2015 report.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Operational notes for a reliable PDF service

Keep the renderer package and native runtime under version control or an auditable installer process. Log a correlation ID, input type, renderer exit status, elapsed time, and output size for each job, while excluding secrets and sensitive HTML. Use a bounded queue if PDF work can arrive in bursts, and set a finite cancellation policy so a stuck renderer cannot consume every worker thread. Monitor failed child-process launches separately from page-level failures; they require different remediation.

Rank #4
NDYIN Portable Printers Wireless for Travel, N80 Bluetooth Thermal Printer
  • Wireless Bluetooth Printer: Portable thermal printer compatible with iPhone, Android phones, iPad and tablet computers via Bluetooth. For smartphones, please download the "Nada Print" App. You can also connect to laptops and computers for printing using a USB-C cable. (Note: Laptops and computers can only be connected via USB and require the installation of a driver first. Bluetooth connection is not supported.)
  • No-ink printing: Only supports US Letter and A4 size thermal paper.(Doesn't support regular paper) The no-ink portable thermal printer uses direct thermal technology, requiring no ink, toner or ribbons, making it environmentally friendly, cost-effective and time-saving. The thermal printer package comes with a roll of US Letter thermal printing paper. Note: When installing the paper, remember to switch the paper size switch on APP
  • Clear Print: NDYIN N80 portable thermal printer adopts high-definition printing technology, with a 203DPI resolution to provide you with clear printing results. This mobile printer is compatible with roll paper, folded paper and tattoo transfer paper, supporting printing from your mobile phone PDF, Word, pictures and web pages anytime and anywhere. It is recommended to use our NDYIN thermal paper to achieve good printing quality
  • Portable wireless printer for travel: The thermal printer is equipped with a built-in 1500mAh rechargeable battery, which can print 160 sheets of 8.5" x 11" thermal paper after being fully charged. It weighs only 1.5 pounds and is compact in size. This ink-free portable printer can be easily carried in a backpack or briefcase! It is perfect for business travel, cars, small offices, construction sites, schools and homes. You can print documents, contracts, invoices and boarding passes anytime and anywhere
  • The N80 thermal printer has a wide range of uses. The package includes the N80 printer, a roll of US Letter paper(7m/roll), a user manual, a guide card, a type-C soft cable and a type C adapter. Note: The charging adapter is not included. Special thermal paper is required for use; ordinary paper cannot be used. This ink-free portable thermal printer is suitable for various scenarios such as home, school, travel, office, and outdoor, meeting the printing needs of different groups of people. This tattoo template printer is also compatible with tattoo transfer paper, making it an ideal choice for tattoo art

Because no current official NReco troubleshooting page for this exact message is established here, verify the supported NReco and wkhtmltopdf packaging for your edition before standardizing a runtime or version. The evidence above is strongest as a diagnostic model: find why the external process ended, then correct that specific cause.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Or skip the browser setup

If your actual goal is to capture a web page as an image or PDF rather than maintain a local wkhtmltopdf deployment, ScreenshotNeo provides a website screenshot API and MCP server. It accepts cookie and consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers.

One GET request returns a PNG, JPEG, WebP, or PDF. The same service supports full-page captures with lazy images loaded, CSS-selector element capture, dark mode, device presets or custom viewports, retina scale, PDF paper and margin controls, custom CSS and JavaScript, clicks before capture, waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, configurable caching, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, usage reporting, and an OpenAPI specification. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.

See the ScreenshotNeo documentation for parameters and PDF options.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

The Free plan includes 1,000 screenshots each month with no card. Paid plans start at $5 for 3,000 shots, and every feature is available on every plan. Create a free ScreenshotNeo account to try it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.