Custom error page configured in IIS for code 400 (bad request) is ignored

For my website I configured some custom error pages.
If I generate a 404, the redirect works fine.
When hitting a 400, the “bad request” text shows up instead of the configured URl.

As a test I copied the URL from 404 to 400. No change.
Then I changed the redirect to a file. No change.

Any ideas?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

I’ve run in to the same problem, and found this on msdn
http://msdn.microsoft.com/en-us/library/ms690497.aspx

I’m not sure if this will work on IIS6, but it certainly works on IIS7.
You need to configure httpErrors, not the custom errors

<system.webServer>
      <httpErrors errorMode="Custom">
            <error statusCode="400" subStatusCode="-1" path="_path" responseMode="Redirect" />
      </httpErrors>
</system.webServer>

Method 2

Maybe this is your answer: this Microsoft site says re configuring custom errors in IIS6 that

The following errors are not
customizable: 400, 403.9, 411, 414,
500, 500.11, 500.14, 500.15, 501, 503,
and 505.

Method 3

Try

Response.TrySkipIisCustomErrors = true;

OR

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

original post

Method 4

Check what’s in your web.config file in the customErrors section. That has a defaultRedirect attribute, and an error subtag with a redirect attribute. These can conflict with your other configuration settings in IIS.

Method 5

In 2020 it will work just like that web.config:

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="400" subStatusCode="-1" />
      ...
      <error statusCode="400" prefixLanguageFilePath="YOUR_PATH" path="YOUR_HTML_FILE" responseMode="File" />
    ...

statusCode

Required integer attribute.

Specifies the number of the HTTP status code for which you want to create a custom error message. Acceptable values are from 400 through 999.

https://docs.microsoft.com/en-us/previous-versions/iis/settings-schema/ms689487(v=vs.90)

Note that bad URL like https://stackoverflow.com/% still won’t be customizable and one will get the simple Bad Request message coming from the IIS Kernel (Error Code 400).

More on that here
https://serverfault.com/questions/257680/properly-handle-iis-request-with-percent-sign-in-url


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x