views:

342

answers:

3

I have a C# web forms ASP.NET 4.0 web application that uses Routing for URLs for some reason custom errors defined in the system.web section of my web.config is entirely ignored and it will fall back the IIS errors.

This gets entirely ignored

  <system.web>
    <customErrors mode="On">
      <error statusCode="500" redirect="~/Error" />
      <error statusCode="404" redirect="~/404" />
      <error statusCode="403" redirect="~/Error" />
    </customErrors>
  </system.web>

This part takes over

  <system.webServer>
    <httpErrors>
      <!--<clear />-->
      <remove statusCode="500" subStatusCode="-1" />
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" subStatusCode="-1" path="/App1/404" responseMode="Redirect" />
      <error statusCode="500" prefixLanguageFilePath="" path="/App1/Error" responseMode="Redirect" />
    </httpErrors>
  </system.webServer>

This would be a minor inconvenience except that by the fact it falls back to IIS native instead of my application it completely circumvents Elmah logging my 404 exceptions correctly.

Edit: Just to avoid any suggestions of such I only added the httpErrors configuration after customErrors stopped working so I would have anything.

A: 

Have you setup a route to ignore Error and 404?

bleevo
I'm going to side with no unless you can do it accidentally as I had no intention of doing that. What makes a route behave as such?
Chris Marisic
+5  A: 

To disable the IIS error messages you have to set

  Response.TrySkipIisCustomErrors = true;

in your error page. After that, your Error messages should show without problem.

Flynn
This is looking most fruitful from my initial goggling, I'm attempting this now. Good post about this topic from Rick Strahl: http://www.west-wind.com/weblog/posts/745738.aspx
Chris Marisic
+1  A: 

This is discussed in the MVC overview tutorials. THe behaviour of IIS errors is dependent on your version of IIS.

Using ASP.NET MVC with Different Versions of IIS (C#)

Philip Smith
Don't think this is relevant, I'm using IIS 7+ in integrated mode.
Chris Marisic