gpt4 book ai didi

asp.net-mvc - httpErrors errorMode = "Detailed"仅适用于特定错误代码

转载 作者:行者123 更新时间:2023-12-02 05:48:39 28 4
gpt4 key购买 nike

我有一个 asp.net MVC3 应用程序。在我的 Controller 中,我有一个 ajax 操作,它使用 Response.StatusCode = 600 设置自定义响应代码。我需要按原样传递响应,而无需 IIS 尝试查找自定义错误页面。我尝试使用以下代码让 IIS 不使用其自定义页面来响应状态 600。

<!-- Pass through Ajax Errors with status code 600 -->
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
<error statusCode="600" path="/" />
</httpErrors>
<!--End -->

上述代码片段的问题在于,这适用于所有响应代码,因此即使代码因 500 Internal Server 而失败,响应也会按原样传递,而不会受到 IIS 干扰。这会将我的内部 Controller 和 View 代码公开给用户(如果偶然发生一些我尚未处理的异常)。

那么,如何配置 web.config 仅当 response.statuscode 为 600(自定义)时才传递详细响应,并为其他错误(例如内部服务器错误 500)提供默认 IIS 自定义页面。

最佳答案

如果您在集成管道模式下运行,您可以尝试设置 TrySkipIisCustomErrors 属性为 true:

Response.StatusCode = 600;
Response.TrySkipIisCustomErrors = true;

话虽这么说 HTTP specification 明确定义响应HTTP状态码不优于5xx。所以设置Response.StatusCode = 600;这里看起来很不寻常。您究竟想要实现什么目的?为什么规范中定义的标准 HTTP 响应代码无法覆盖您的场景?

关于asp.net-mvc - httpErrors errorMode = "Detailed"仅适用于特定错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7539378/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com