我想在错误状态代码响应方面有以下行为:
对于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
可以使用httpErrors
和customErrors
的组合,但后者不支持ExecuteURL
- 只有静态错误页面。这是不幸的,因为我想使用主人Layout.cshtml
。
有什么建议吗?