抛出异常时隐藏源错误(代码行)

时间:2012-03-21 07:44:34

标签: c# asp.net

如何隐藏在黄色死亡屏幕中抛出异常的源代码?例如,请考虑以下有关潜在危险请求的屏幕:

enter image description here

在上面的示例中,不显示源行。然而,如果是任何自定义编写的代码抛出异常,则错误行总是显示如下:

enter image description here

如何在抛出错误时隐藏代码行(类似于第一张图片)?

7 个答案:

答案 0 :(得分:6)

在“web.config”文件中将customErrors sectionmode属性设置为RemoteOnly

<?xml version="1.0" encoding="utf-8"?>

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" />
    </system.web>
</configuration>

这使您可以在服务器上本地浏览网站时查看详细错误,但不会显示远程访问者的详细错误。

或者,将其设置为On而不是RemoteOnly,以完全隐藏详细错误,无论您是远程浏览还是本地浏览。

答案 1 :(得分:1)

您可以在Web配置customErrors定义中配置它。

http://msdn.microsoft.com/en-us/library/h0hfz6fc(v=vs.71).aspx

答案 2 :(得分:1)

要做到这一点非常简单,只需编辑您的web.config文件即可:

<customErrors mode="RemoteOnly" />

答案 3 :(得分:0)

因为它显然是潜在的危险请求,用户可能会发送未经过消毒的数据,如

<script type="text/javascript"> alert('sdas');</script>

您甚至可以查看此链接Prevent Script exploits

  1. 您可以使用HtmlEncode方法,HTML Encode
  2. 您可以在网络配置中禁用自定义错误
  3. web config

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

答案 4 :(得分:0)

将这些行添加到Web.config

<configuration>
    ...

    <system.web>
        <customErrors mode="On"
                      defaultRedirect="~/ErrorPages/Oops.aspx" />

        ...
    </system.web>
</configuration>

答案 5 :(得分:0)

如果这是现场而不是在开发机器上,它根本不应出现。

你可以从<customErrors>检查web.config,这样你就可以设置显示一个漂亮的html页面(普通的静态,不是aspx,不是由ASP .Net处理),它表示发生了错误,等等。

然后ELMAH有助于记录这些错误(包括源代码行,需要查看发生的错误以便修复等)。

此外,不应在 DEBUG 模式下部署实时网站,而应在发布模式下部署。对于Web Site Projects,只能在config切换,但对于Web Application Projects,您需要使用正确的设置进行编译。

答案 6 :(得分:0)

制作一个假类 - 创建dll

// lines of codes
yummy.Faker();

转到您当前正在工作的项目。 添加DLL的引用 去你想扔错误的地方。写下这个。

npm install -g tsd
tsd query angular2 --action install

我把它放在静态类的一些构造函数中,即helper12。然后异常似乎来自helper12类