C# 如果我的MVC3应用程序中出现问题,如何创建一个全面错误页面?

C# 如果我的MVC3应用程序中出现问题,如何创建一个全面错误页面?,c#,.net,asp.net-mvc-3,custom-error-pages,C#,.net,Asp.net Mvc 3,Custom Error Pages,目前,我的web.config文件设置为不显示调试信息。当发生错误,出现问题时,将向我的用户显示此页面: 很抱歉,处理您的请求时出错 这是默认的错误页面 如果我的网站在任何时候任何地方出现问题,我如何重定向到自定义视图?错误处理可能会很混乱。虽然编辑默认错误页面会有所帮助,但您应该了解一些详细信息 本质上,有两种类型的错误:托管代码中的错误,您可以使用代码以某种方式“捕获”。第二,有一些IIS错误从未出现在托管代码中,因为从未调用关联的处理程序。例如,不映射任何路由的请求不会调用任何代码,因为I

目前,我的web.config文件设置为不显示调试信息。当发生错误,出现问题时,将向我的用户显示此页面:

很抱歉,处理您的请求时出错

这是默认的错误页面


如果我的网站在任何时候任何地方出现问题,我如何重定向到自定义视图?

错误处理可能会很混乱。虽然编辑默认错误页面会有所帮助,但您应该了解一些详细信息

本质上,有两种类型的错误:托管代码中的错误,您可以使用代码以某种方式“捕获”。第二,有一些IIS错误从未出现在托管代码中,因为从未调用关联的处理程序。例如,不映射任何路由的请求不会调用任何代码,因为IIS假定请求了静态资源

我建议这三个步骤使错误处理更加方便

  • 不要重定向错误时重定向违反HTTP。相反,您只需使用
    Server.Transfer
    returnview(“…”
    )返回页面,或者直接写入响应流,具体取决于错误的处理位置。关键点:URL不应该改变。例如,见

  • 添加并注册继承
    HandleErrorAttribute
    的全局筛选器,并实现错误处理(和日志记录)例程。您可以使其智能化,以便它返回HTML请求的HTML和JSON请求的JSON,等等

  • 配置并删除IIS的默认错误处理程序,以确保所有错误都指向同一个目标(如果需要)。这将防止您访问IIS默认错误页面。您可以在IIS管理器中或在
    web.config
    中执行此操作


你的意思是超越编辑/Views/Shared/Error.cshtml吗?我不知道加载的是文件!谢谢D@SergioTapia:如果您的网站出现任何问题,您真的希望它转到此页面吗?返回JSON或XML或其他非HTML的操作如何?@casperOne:在这种情况下,指向此页面的所有内容都“足够好”。检查答案,它适用于MVC 3和MVC 4。