IIS 7.5:发送带有自定义错误的http状态代码422

时间:2012-10-16 06:31:05

标签: error-handling iis-7.5 http-status-codes custom-errors

我在asp.net mvc app中使用自定义动作过滤器将http状态代码422和json验证错误列表(基本上是序列化模型状态字典)返回给客户端,我在jQuery中使用全局ajaxError处理程序处理它。

所有这些都适用于开发环境,但我的问题是当启用自定义错误模式(<system.webServer>/<httpErrors errorMode="Custom">)时,IIS用文本替换响应(json)“自定义错误模块无法识别此错误。” / p>

如果状态代码为422,我很难正确配置IIS以传递原始响应。有人做了类似的事吗?

3 个答案:

答案 0 :(得分:12)

如果Web服务器配置为传递现有响应,则会将json内容返回给浏览器。

<system.webServer>
  <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough">
  </httpErrors>
</system.webServer>

MSDN: httpErrors Element [IIS Settings Schema]

答案 1 :(得分:0)

enter image description here

为IIS 7.5进行以下设置,对我来说很好用,这里最重要的是安装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>

答案 2 :(得分:0)

检查是否在 IIS 中为您的应用程序配置了错误页面。您需要为状态代码添加自定义错误页面,例如:429

IIS Error pages configuration

添加状态代码 HTMLstrong 文本页面。应该可以解决问题

Error HTML page configuration