Boris Callens
Boris Callens

Reputation: 93327

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?

Upvotes: 8

Views: 15798

Answers (5)

Alexander Mihailov
Alexander Mihailov

Reputation: 1168

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://learn.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

Upvotes: 2

DOK
DOK

Reputation: 32841

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.

Upvotes: 6

Roman O
Roman O

Reputation: 3520

Try

Response.TrySkipIisCustomErrors = true;

OR

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

original post

Upvotes: 3

Nikita Ignatov
Nikita Ignatov

Reputation: 7163

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>

Upvotes: 7

DOK
DOK

Reputation: 32841

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.

Upvotes: 0

Related Questions