IIS logs 500.19 if a client drops connection while loading the website

HTTP status and sub-status codes provide valuable information about the issues users come across. One of the code pairs is 500.19 which means “Configuration data is invalid“. However, IIS may show this pair incorrectly if a user drops connection before the browser loads the website completely.

The error message from the Failed Request Tracing log is below. Please note that this error appears during the execution of the Dynamic Compression module.

HttpStatus: 500

HttpReason: Internal Server Error

HttpSubStatus: 19

ErrorCode: An operation was attempted on a non existent network connection (0x800704cd)

What happens when a client drops connection
Error log when the client drops connection

Steps to reproduce this issue:

  • The client goes to the URL
  • The page starts loading
  • The client drops the connection before the page is fully loaded (disconnects the wireless or turn off the device)

For a scenario in which 500.19 error appear because of an invalid configuration data, check this post out.

What happens if the user drops connection?

The expected behavior for IIS to log one of these code pairs: 200.0.995, 200.0.64, 206.0.995 or 206.0.64 (The last part of the codes is sc_win32_status. It is 64 or 995 in these pairs). However, in this case, IIS logs 500.19.64. clearly:

2019-01-17 02:06:34 W3SVC535435 web32 GET /address/ - 80 - Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:29.0) +Gecko/20120101+Firefox/29.0 - domain.com 500 19 64 678298 200 411

In the record above, the size of the data loaded is 678298 bytes. The page size is about 1 MB. It means that the user dropped the connection after the browser loaded about 70% of the data.

In addition to IIS logs, it is a good idea to check HTTPERR logs as well. IIS saves logs for the activities happened in kernel-mode. In this case, HTTPERR file shows “Connection_Dropped”. However, this could be misleading because if there is a record in IIS logs, HTTPERR should have a record for that request. Pay extra attention to see if the timestamp matches the date/time of the issue. Read the next section for details.

2019-01-17 06:48:55 36971 443 HTTP/1.1 POST /index.html - 400 51 Connection_Dropped hsn-core+ASP.NET+Core

“Zombie” connections

I would like to open a parenthesis before going forward with the issue details and the solution. There is a very similar scenario to the issue I mentioned above (The client drops connection while page is loading). Microsoft well documented this scenario.

When a client drops the connection before getting the full response, this connection is called a “zombie connection”. IIS (more specifically, HTTP.SYS) doesn’t drop these connections right away. It waits for the timeout value (120 seconds by default). If the response is still not completed, It drops the connection. In this case, It is expected to see a 500 error along with the 64 code in sc_win32_status column.

The Http.sys driver adds the “zombie connection” to a list. Because the original connection object is still available, the original connection object information can be included in the logging information when the request is completed. If the response is completed before the time-out value that is used by the Http.sys driver is reached, no information is logged in the Httperr.log file. Instead, the status code is logged in the IIS log. For example, an “HTTP 200-OK” status code is logged in the IIS log when the request succeeds.

Microsoft Support

Solution for the incorrect 500.19 logs

It is a bug in the Dynamic Compression module. This module throws 500 error for any failure. I am hoping that a patch is developed to address this issue soon.

If the incorrect logs are causing serious issues, you can disable Dynamic Compression so that IIS logs accurate error codes. However, please note that disabling Dynamic Compression increases the bandwidth usage and response times.

If you are receiving “Internal Server Error” in your WordPress blog, here is the solution.

WordPress 500 Internal Server Error

Web servers display an HTTP status code such as 404 (Page Not Found) or 500 (Internal Server Error) when there is an issue accessing the website. Some issues are easy to fix (Ex. just upload the file if you get 404 error). Some issue are more challenging to cope with. WordPress 500 Internal Server Error is one of them.

The first step is to make sure what status code you receive. In most cases, the browser clearly indicates the HTTP 500 error. However, you may see only a white blank page in some situations. I would recommend visiting the URL via different browsers. Browsers have different error pages and formats.

WordPress 500 Internal Server Error
WordPress 500 Internal Server Error

Are you seeing “Error establishing a database connection” error while accessing your WordPress blog? Check this post out for the solution.

Check server logs

Even if you see 500 error in the browser, I would recommend connecting to the server and checking IIS or Apache logs. The logs will show you HTTP status code as well as the sub-status code such us 500.11 or 500.19. The sub-status code provides a valuable information about the issue. Check this post to see the meaning of each sub-status code.

If you are using a hosting provider such as GoDaddy or RackSpace, you can obtain the server logs in your dashboard. Most of the time, these logs are available via a few clicks. Therefore, you don’t need to contact the customer support.

Logs to troubleshoot WordPress 500 Internal Server Error
Server logs from GoDaddy

Is the HTTP sub-status code 500.19? Here is how to fix it: Prevent settings to be overridden by web.config (HTTP Error 500.19)

Fix WordPress 500 Internal Server Error

Here are the most common causes and the solutions for the WordPress 500 error:

  • Misconfiguration in .htaccess file
    • Solution: Simply rename this file. If the issue goes away it’s better to create a brand-new .htaccess file. Go to your blog’s dashboard. Click “Settings > Permalinks”. Click “Save Changes” (You don’t need to make any changes).
  • PHP memory limit
    • Solution: Create a text file and name it php.ini. Add memory=64MB line to this file and upload it to your server.
  • Windows hosting settings. This issue happens if you move WordPress files from a Windows server to Linux server
    • Solution: Remove user.ini and any other Windows server related files from the root folder of your website

If you are still seeing a white blank page or receiving WordPress 500 Internal Server Error, double check the information in your wp-config.php file. In this file, change the value of WP_DEBUG parameter to true to see more details about the issue.

In conclusion, HTTP 500 error may mean there is a damaged file, insufficient file permission or wrong configuration in your WordPress blog or hosting account. If you can’t solve the problem no matter what you do, please reach out to your server admins or hosting provider.

If you have any questions, please drop a comment! I try to answer questions as much as I can.

Solved: for the error “Handler “PageHandlerFactory-Integrated” has a bad module “ManagedPipelineHandler” in its module list”

If you try to publish an ASP.NET web site in a computer on which ASP.NET wasn’t completely installed, you may face this annoying error:

HTTP Error 500.21 – Internal Server Error
Handler “PageHandlerFactory-Integrated” has a bad module “ManagedPipelineHandler” in its module list

Result of inadequate ASP.NET installation
Result of inadequate ASP.NET installation

You can sort it out by fully installing ASP.NET. Open command prompt (Start > Run > cmd) and type the command following:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

ASP.NET installation
ASP.NET installation