禁用生产环境中的ASP.NET服务器错误页面

时间:2017-03-23 07:23:27

标签: asp.net iis error-handling

我想在错误状态代码响应方面有以下行为:

  • 在JsonResult Actions(用于AJAX回发)中,返回自定义正文以及一些错误状态代码
  • 对于其他操作方法中的错误,请显示IIS(自定义)错误页面
  • 对于404错误,请显示IIS(自定义)错误页面

  • 在本地环境中:对于非json操作方法和404中的错误,使用stacktrace显示ASP.NET错误页面

如果我在web.config中的existingResponse=Replace元素中设置httpErrors,则IIS错误页面会覆盖任何带有错误状态代码的响应。那是我无法返回自定义的json响应。 如果我设置existingResponse=Auto,我可以通过设置Response.TrySkipIisCustomErrors=true返回自定义json响应,但随后会显示任何其他错误状态代码的ASP.NET(自定义)错误页面。也就是说,它永远不会回退到IIS错误页面。似乎ASP.NET自动设置TrySkipIisCustomErrors服务器错误,这是我不想要的。

有没有办法实现我所描述的?我可能会使用ASP.NET customErrors部分,但我意识到它也有缺点,如下所述: https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging

可以使用httpErrorscustomErrors的组合,但后者不支持ExecuteURL - 只有静态错误页面。这是不幸的,因为我想使用主人Layout.cshtml

有什么建议吗?

0 个答案:

没有答案