如何捕获ASP.NET MVC中的错误并向用户显示一个优雅的错误消息?

时间:2010-10-04 13:31:15

标签: asp.net-mvc

我正在为我的组织编写一个非常小的应用程序。由于似乎没有人知道他想要什么,我决定在本地服务器上部署演示,以便人们可以了解如何构思大事。

现在出现问题:在笔记本电脑上进行开发时,当应用程序崩溃时,我会看到一个黄色屏幕,提供有关问题的反馈(对我来说)。但是,如果我决定将应用程序放到网上,我不希望那些不是开发人员的人看到那种黄色屏幕(我知道他们可能只是少数因为演示只是一个起点)。

无论如何我可以建立一个机制,以便在出现致命错误时,用户可以通过电子邮件链接告诉他发送电子邮件给我一个漂亮的屏幕吗?

感谢您的帮助

5 个答案:

答案 0 :(得分:3)

我建议在项目中连接ELMAH,并在其他答案中添加自定义错误标记。这样,您就可以轻松获得用户可读的错误页面和完整的错误跟踪。您还可以将elmah配置为自动向您发送包含详细信息的电子邮件。用户甚至不需要知道它发生了......

无价!

答案 1 :(得分:2)

使用root web.config的customErrors部分指定应用程序处理错误的方式 在您的情况下,我认为您需要将此设置为RemoteOnly,以便您仍然可以在本地计算机上看到错误并设置500个错误以转到您的联系表单:

<configuration>
  <system.web>
    <customErrors defaultRedirect="Error.htm" mode="RemoteOnly">
      <error statusCode="500" redirect="ContactAdmin.htm"/>
    </customErrors>
  </system.web>
</configuration>

答案 2 :(得分:1)

与使用customErrors

的经典ASP.NET类似

答案 3 :(得分:1)

我想快速修复是使用try catch块。捕获错误时,将用户发送到自定义错误控制器和操作。在这个动作上你可以有一个表格让他们给你发电子邮件......在隐藏的字段中你可以有例外,因为你把它传递给了行动。

    try
    {
        int myvar = 0/4;
    }
    catch(Exception exceptionObject)
    {
        return RedirectToAction("HandledExceptionAction", "ErrorController", exceptionObject);
    }

答案 4 :(得分:0)