IIS 7.5: sending http status code 422 with custom errors on
-
07-07-2021 - |
Question
I use custom action filter in asp.net mvc app to return http status code 422 and json list of validation errors (basically serialized model state dictionary) to client, where I handle that with global ajaxError handler in jQuery.
All of this works on development enviroment, but my problem is when custom errors mode is on (<system.webServer>/<httpErrors errorMode="Custom">
), IIS replaces response (json) with text "The custom error module does not recognize this error."
I'm having hard time properly configuring IIS to pass-through original response if status code is 422. Anyone did something similar?
La solution
If web server is configured to pass through existing response, it will return json contents to browser.
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough">
</httpErrors>
</system.webServer>
Autres conseils
Make the following settings for IIS 7.5, this works fine for me, the most important thing here was the installation of the existingResponse="Replace"
:
<httpErrors errorMode="DetailedLocalOnly" existingResponse="Replace" detailedMoreInformationLink="http://YouLink" lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
<error statusCode="401" prefixLanguageFilePath="" path="C:\path\to\401.htm" responseMode="File" />
<error statusCode="403" prefixLanguageFilePath="" path="C:\path\to\403.htm" responseMode="File" />
<error statusCode="404" prefixLanguageFilePath="" path="C:\path\to\404.htm" responseMode="File" />
<error statusCode="405" prefixLanguageFilePath="" path="C:\path\to\405.htm" responseMode="File" />
<error statusCode="406" prefixLanguageFilePath="" path="C:\path\to\406.htm" responseMode="File" />
<error statusCode="412" prefixLanguageFilePath="" path="C:\path\to\412.htm" responseMode="File" />
<error statusCode="500" prefixLanguageFilePath="" path="C:\path\to\500.htm" responseMode="File" />
<error statusCode="501" prefixLanguageFilePath="" path="C:\path\to\501.htm" responseMode="File" />
<error statusCode="502" prefixLanguageFilePath="" path="C:\path\to\502.htm" responseMode="File" />
<error statusCode="400" prefixLanguageFilePath="" path="C:\path\to\400.htm" responseMode="File" />
</httpErrors>