目前,我的 web.config 文件设置为不显示调试信息。当发生错误并且出现问题时,此页面会显示给我的用户:
抱歉,处理您的请求时出现了一个错误。
这是默认的错误页面。
如果在我的站点中的任何时间任何地方出现问题,我如何重定向到自定义视图?
目前,我的 web.config 文件设置为不显示调试信息。当发生错误并且出现问题时,此页面会显示给我的用户:
抱歉,处理您的请求时出现了一个错误。
这是默认的错误页面。
如果在我的站点中的任何时间任何地方出现问题,我如何重定向到自定义视图?
错误处理可能很混乱。虽然编辑默认错误页面会有所帮助,但您应该注意一些细节。
本质上,有两种类型的错误:托管代码中的错误,您可以使用代码以某种方式“捕获”。其次,IIS 错误永远不会出现在您的托管代码中,因为从未调用过关联的处理程序。例如,不映射任何路由的请求不会调用任何代码,因为 IIS 假定请求了静态资源。
我建议这三个步骤使错误处理更方便一些
不要重定向!错误重定向违反了 HTTP。相反,您应该简单地使用Server.Transfer
orreturn View("...")
或通过直接写入响应流来返回页面,具体取决于处理错误的位置。关键点:URL 不应该改变。参见,例如http://www.google.com/asdf/asdf
添加并注册一个全局过滤器,该过滤器继承HandleErrorAttribute
并实现您的错误处理(和日志记录)例程。你可以让它变得聪明,让它为 HTML 请求返回 HTML,为 JSON 请求返回 JSON,等等。
配置删除 IIS 的默认错误处理程序,以确保所有错误都到达相同的目标,如果这是您想要的。这可以防止你看到丑陋的 IIS 默认错误页面。您可以在 IIS 管理器或web.config
.