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();