How to diagnose a 500 Internal Server Error on IIS 7.5 when nothing is written to the event log?

Solution 1:

Take a look at IIS7's Failed Request Tracing feature:

Troubleshooting Failed Requests Using Tracing in IIS 7
Troubleshoot with Failed Request Tracing

The other thing I would do is tweak your <httpErrors> setting because IIS may be swallowing an error message from further up the pipeline:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

If the site is written in Classic ASP then be sure to turn on the Send Errors to Browser setting in the ASP configuration feature:

enter image description here

And finally, if you're using Internet Explorer then make sure you've turned off Show friendly HTTP error messages in the Advanced settings (though I suspect you've done that already or are using a different browser).

Solution 2:

In my case:

  • The Event Log was empty.
  • web.config wasn't corrupt - verified by using same on local machine / using inetmgr

Finally...

  • Checking IIS logs showed a request like this

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

The key being:

sc-status sc-substatus sc-win32-status 500 19 5

which with some googling pointed me to the IIS_USRS not having read permissions to the www folder


Solution 3:

The most obvious issue is improper or zero NTFS rights on the web application folder. So make sure the account serving the site has the right permissions. Without proper NTFS rights to the web directory it doesn't matter what you put in the web.config as it will never be read.

A quick check can be to give everyone full rights - if the site starts working then you know it's a rights problem and you can then set about assigning appropriate rights to a more appropriate account.