Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 引发异常时隐藏源错误(代码行)_C#_Asp.net - Fatal编程技术网

C# 引发异常时隐藏源错误(代码行)

C# 引发异常时隐藏源错误(代码行),c#,asp.net,C#,Asp.net,如何在死亡的黄屏中隐藏抛出异常的源代码行?例如,考虑以下潜在危险要求的屏幕: 在上述示例中,不显示源行。然而,如果是任何自定义编写的代码引发异常,则错误行始终显示如下: 当抛出错误时,如何隐藏代码行(类似于第一幅图像)?因为它清楚地表明这是一个潜在危险的请求,用户可能会发送未经清理的数据,如 alert('sdas') 你甚至可以查看这个链接 您可以使用HtmlEncode方法 您可以在web配置中禁用自定义错误 网络配置 <system.web> <customE

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

在上述示例中,不显示源行。然而,如果是任何自定义编写的代码引发异常,则错误行始终显示如下:


当抛出错误时,如何隐藏代码行(类似于第一幅图像)?

因为它清楚地表明这是一个潜在危险的请求,用户可能会发送未经清理的数据,如

alert('sdas')

你甚至可以查看这个链接

  • 您可以使用HtmlEncode方法
  • 您可以在web配置中禁用自定义错误
  • 网络配置

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

    您可以在web配置自定义错误定义中对此进行配置


    将这些行添加到Web.config

    <configuration>
        ...
    
        <system.web>
            <customErrors mode="On"
                          defaultRedirect="~/ErrorPages/Oops.aspx" />
    
            ...
        </system.web>
    </configuration>
    
    
    ...
    ...
    
    要做到这一点非常简单,只需编辑web.config文件,以便:

    <customErrors mode="RemoteOnly" />
    

    在“web.config”文件中将的
    模式
    属性设置为
    RemoteOnly

    
    
    这使您能够在服务器上本地浏览网站时查看详细错误,但不会向远程访问者公开详细错误


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

    如果这是实时的,而不是在开发机器上,则它不应该出现

    您可以从
    web.config
    中检查
    ,这样您就可以设置为显示一个漂亮的html页面(纯静态,不是aspx,不是ASP.Net处理的),该页面表示发生了错误,等等

    然后是记录这些错误的好方法(包括源代码行,需要查看是否发生了错误,以便进行修复等)


    此外,实时网站不应以调试模式部署,而应以发布模式部署。对于
    网站项目
    只能在
    配置
    中切换,但是对于
    Web应用程序项目
    您需要使用正确的设置进行编译。

    创建假类-创建dll

    public static class yummy
    {
        public static FAKER()
        {
           throw new exception();
        }
    }
    
    转到当前正在工作的项目。 添加对该DLL的引用 去你想抛出错误的地方。写这个

    // lines of codes
    yummy.Faker();
    

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

    根据我的经验,将错误页面设置为.aspx页面不是一个好的做法。认为错误可能来自模块或无效的配置文件,然后Oops.aspx将没有机会显示。@AdrianIftode我给了他选项(因此MSDN)mode=“On”存在。如果他需要/不需要默认页面,他可以删除它。我只是说,拥有一个不经过ASP.Net引擎的html页面比拥有一个由ASP.Net处理的aspx页面要好。只是想一想…谢谢你们这么及时。。但我只在应用程序中的一个实例中寻找隐藏源代码行的方法,在这个实例中我显式地抛出了一个错误。我对默认设置很满意,否则会显示YOSD的所有细节。在这个例子中,我正在检查http请求中是否存在一些值,如果我找到一个值,我就会抛出httprequestvalidation错误(有点像“潜在的危险..错误”。如果我的源代码显示,它也将显示我正在检查的值。
    或者,将其设置为Off而不是RemoteOnly以完全隐藏详细错误,
    …这是错误的。
    设置为Off将显示详细信息。您应该将其设置为On
    谢谢,@RoyiNamir我已更改了输入错误。谢谢您的指点!
    // lines of codes
    yummy.Faker();