Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting IIS7 'one liner' error when using custom error settings in web.config

Tags:

asp.net

iis

iis-7

I have an ASP.NET MVC application which returns 404 and occasionally, 500 status codes at various, appropriate points.

Response.StatusCode = (int)HttpStatusCode.NotFound;

When I set one of these status codes, I also set the TrySkipIisCustomErrors property appropriately.

Response.TrySkipIisCustomErrors = true

What I would like to do now, is configure IIS to pass through these errors, which I am setting myself, and catch any other errors that may occur (such as 404s on static files, where I am not sending requests to ASP.NET, or uncaught 500 errors in my application (where presumably the TrySkipIisCustomErrors propety will not have been set by the framework).

My system.webServer/httpErrors node looks like this:

<httpErrors existingResponse="Auto" errorMode="Custom">
</httpErrors>

This returns my own ASP.NET errors where I set TrySkipIisCustomErrors = true, and the standard IIS error pages for uncaught 500s, static file 404s etc.

I then tried modifying it like this:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL">
  <clear />
</httpErrors>

I believe that this should display my custom error page in place of the standard IIS one. However, when I add this code I get a one line IIS error ("The page cannot be displayed because an internal server error has occurred.") and it returns a 500 status code.

I assume this is due to an error in my configuration, but I can't for the life of me understand what I'm doing wrong!

I have also tried this approach, with the same results:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File">
  <clear />
</httpErrors>

Even setting a redirect to a completely different URL produces the same problem.

I have been using this page among others for reference: http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.

The error file definitely exists, and I am able to hit it directly using a browser.

As an aside, I'm not entirely sure what I should be doing with the system.Web\customErrors node. Is this an IIS6 only setting, or does it somehow relate to ASP.NET? Currently I do not include it in my web.config.

like image 325
jamiecon Avatar asked Nov 05 '22 11:11

jamiecon


2 Answers

add this to your system.webserver node. It will tell IIS to let the errors be handeled by ASP.Net.

<httpErrors existingResponse="PassThrough" />
like image 89
Khalid Abuhakmeh Avatar answered Nov 15 '22 06:11

Khalid Abuhakmeh


I know this is an old question but it's identical to the problem I have been having for the past few days that I just recently figured out. What worked for me:

Try removing the

<httpErrors>

element from web.config entirely.

like image 43
JPRO Avatar answered Nov 15 '22 05:11

JPRO