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

问题描述 投票:9回答:2

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

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

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

error-handling iis-7.5 http-status-codes custom-errors
2个回答
12
投票

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

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

MSDN: httpErrors Element [IIS Settings Schema]


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>
© www.soinside.com 2019 - 2024. All rights reserved.