【问题标题】:Showing Detailed Error Messages显示详细的错误消息
【发布时间】:2012-04-01 06:28:34
【问题描述】:

我有一个小Try Catch 块,当无效数据传递给我的应用程序时,它会告诉用户更详细的信息:

try
{
    //do something that throws an exception because of invalid data
}
catch (Exception ex)
{
    throw new Exception("You have invalid data");
    //throw ex;
}

当我使用无效数据在本地运行应用程序时,它会按预期抛出 Exception

You have invalid data

但是,当我将它发布到服务器时,它只会像这样抛出 Exceptions 以获得相同的确切错误:

There was an error processing the request.

我仍然可以使用有效数据运行代码,所以我知道其他一切正常。

我还有什么要添加到我的web.config 的吗?

这是我现在拥有的:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>

【问题讨论】:

  • 您确实意识到,使用过于宽泛的Exception 课程会给您带来比它解决的问题更多的问题,不是吗? (我什至不会说捕获和抛出完全相同类型的异常只是为了“发出信号”错误条件。)
  • 所以如果我 catch 那个特定的异常类型它会起作用吗?
  • 两个问题:(1) IIS 的哪个版本 (2) 如果 7+ IIS 是如何配置的 - 经典还是集成?
  • ex.Message 会给你消息详情
  • @Greg 不幸的是,这个问题从问题中非常不清楚。

标签: c# asp.net exception iis-7 asp.net-4.0


【解决方案1】:

您实际上不应该以这种方式显示您的网站访问者例外情况。

如果您要验证用户数据,请在用户界面级别使用form validation 进行验证。

Exceptions are for dealing with exceptional circumstances。如果您有不是来自您的用户但导致一些特殊情况的无效数据,那么您的用户可能不需要知道详细信息。在这种情况下,通常会显示带有某种通用“技术错误”消息的页面,该消息为问题道歉并确保有人正在调查它。

如果您想在开发过程中查看服务器异常的详细信息,则应在 web.config 中将自定义错误设置为关闭

<system.web>
    <customErrors mode="Off">
    </customErrors> 
</system.web>

【讨论】:

    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多