Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IIS7 custom 404 not showing

created a new IIS7 web site with Intergrated .net 4.0 app pool.

URLs ending with .aspx do show custom 404 anything else gives the blue server error page "HTTP Error 404.0 - Not Found The resource you are looking for has been removed, had its name changed, or is temporarily unavailable." (so nothing to do with IE)

<customErrors redirectMode="ResponseRewrite" mode="On" defaultRedirect="/pages/404.aspx" /> </system.web> <system.webServer>     <httpErrors  >         <remove statusCode="404" subStatusCode="-1" />         <error statusCode="404" prefixLanguageFilePath="" path="/pages/404.aspx" responseMode="ExecuteURL" />     </httpErrors> </system.webServer> 

also tried

<httpErrors existingResponse="PassThrough" /> 

but that just resulted in an empty response.

I have only found one reference to the usefulness of executing the appcmd to test the custom http error handling but here are the results.

C:\Windows\System32\inetsrv>appcmd list config "http://mysite/file.notexist" -section:httpErrors  <system.webServer>     <httpErrors>         <error statusCode="401" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="401.htm" />         <error statusCode="403" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="403.htm" />         <error statusCode="404" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="404.htm" />         <error statusCode="405" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="405.htm" />         <error statusCode="406" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="406.htm" />         <error statusCode="412" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="412.htm" />         <error statusCode="500" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="500.htm" />         <error statusCode="501" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="501.htm" />         <error statusCode="502" prefixLanguageFilePath="%SystemDrive%\inetpub\custer r" path="502.htm" />     </httpErrors> </system.webServer> 

which is odd because in iis7 manager the error pages show

404 /pages/404.aspx Execute URL Local 

.Net Error Pages shows nothing, though I did have an entry in there.

Question 1 : what steps do I need to take for a completely new asp .net 4 iis7 site to have a custom .net error page for every 404 result ?

Question 2 : why does the .net handler work for .aspx files and nothing else ?

note: set the 404 at server level and the appcmd command then showed the custom 404 in the path, but made no difference to the site failing to showing 404.

So I am guessing it's a red herring.

like image 527
rob Avatar asked Jul 11 '11 09:07

rob


People also ask

How do I fix 404 error in IIS?

Go to IIS logs and check if there is a sub-status code for the 404 error. Go to Request Filtering in IIS Manager to make sure there is no rule affecting ASP.NET pages. Check if the other websites hosted in IIS work. Create a new website and application pool to try accessing your ASP.NET pages.

How do I enable custom errors in IIS?

You can add custom error messages to IIS by adding an <error> element to the <httpErrors> element in the Web. config file for your site, application, or URL.

How do I redirect a custom error page in IIS?

Within the text box, “File path,” type the URL of the custom error page, and then click “OK.” Note: Make sure when selecting this option that the path is a relative path. Once you hit “OK,” your custom 404 error page should be live and doing its job.


1 Answers

answer was to use

    <httpErrors existingResponse="Replace" errorMode="Custom">         <remove statusCode="404" subStatusCode="-1" />         <error statusCode="404" prefixLanguageFilePath="" path="/pages/404.aspx?he" responseMode="ExecuteURL" />     </httpErrors> 

and not to have any system.web customErrors

this worked for both .aspx and non .aspx requests.

bizarrely this combination did not come up in any of the blog posts and stackoverflow answers I had investigated, it was just luck I tried it.

like image 63
rob Avatar answered Sep 23 '22 13:09

rob