惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - Bobby

SQL Top注意事项 asp.net回车提交表单 - Bobby - 博客园 C#关于值类型和引用类型 Asp.Net XML操作基类(修改,删除,新增,创建) 项目中的代码 客户端全部选中或取消Repeater中的CheckBox - Bobby - 博客园 javascript技巧参考(转载) js倒计时关闭窗口&计算字数 - Bobby - 博客园 CSS控制GridView固定表头 - Bobby - 博客园 经典算法-C#四种排序算法 js设置调用cookie设置背景颜色 字号、颜色 js简繁转换代码 ASP.NET错误处理和程序优化 学习SQL应知道的动态SQL语句基本语法 js宝典学习笔记【转载】 在b/s开发中经常用到的javaScript技术整理 Visual C#常用函数和方法集汇总 SQL SERVER 与ACCESS、EXCEL的数据转换 不被浏览器屏蔽的对联广告
ASP.NET错误处理的方式(总结)
Bobby · 2007-04-18 · via 博客园 - Bobby

ASP.NET错误处理的方式(整理&总结)
英文文章研究:http://wrfwjn.blog.hexun.com/4172839_d.html
总述:
要 创建页中的全局处理程序,请创建 Page_Error 事件的处理程序。要创建应用程序范围的错误处理程序,请在 Global.asax 文件中将代码添加到 Application_Error 方法。只要您的页或应用程序中发生未处理的异常,就会调用这些方法。您可以从 HttpServerUtility.GetLastError 方法获取有关最新错误的信息。
注意   如果您具有全局错误处理程序,则它优先于在 Web.config customErrors 元素的 defaultRedirect 属性中指定的错误处理。

原则(MSDN):在您的应用程序显示错误信息时,它不应该泄露有助于恶意用户攻击您系统的信息。例如,如果您的应用程序试图登录数据库时没有成功,则显示的错误信息不应该包括它正在使用的用户名。

有许多方法可以控制错误信息:

将应用程序配置为不向远程(应用程序)用户显示详细错误信息。您也可以选择将错误重定向到应用程序页。
只要可行就包括错误处理,并编写您自己的错误信息。在您的错误处理程序中,您可以进行测试以确定用户是否为本地用户并作出相应的响应。
在捕捉所有未处理异常并将它们发送到一般错误页的页级别或应用程序级别上,创建全局错误处理程序。这样,即使您没有预料到某个问题,至少用户不会看到异常页。

<一>页面级的错误处理

void Page_Error(Object sender, EventArgs e) {
    String message 
= "<font face=verdana color=red>"
                           
+ "<h4>" + Request.Url.ToString() + "</h4>"
                           
+ "<pre><font color='red'>" + Server.GetLastError().ToString() + "</pre>"
                           
+ "</font>";

    Response.Write(message);
    Server.ClearError();
}

注:通过使用 Server 对象访问来自服务器的错误信息。特别地,该示例从 Request 对象获取请求的 URL,以及 Server 对象的最新错误(使用 GetLastError 方法),并将这两者都转换为客户端可以显示的字符串。将 message 变量写入客户端后,通过使用 ClearError 方法删除该错误

<二>应用程序级的错误事件中,错误处理方式如下:global.asax文件中的application_error中添加处理 逻辑,可添加其它操作,如写入windows事件日志,发邮件给管理员,将错误信息写入数据库。具体如下:

 1protected void Application_Error(Object sender, EventArgs e)
 2        {
 3            String Message = "\n\nURL:\n http://localhost/" + Request.Path
 4                + "\n\nMESSAGE:\n " + Server.GetLastError().Message
 5                + "\n\nSTACK TRACE:\n" + Server.GetLastError().StackTrace;
 6            //写入windows事件日志
 7            String LogName = "Application";
 8            if (!EventLog.SourceExists(LogName)) 
 9            {
10                EventLog.CreateEventSource(LogName, LogName);
11            }

12            EventLog Log = new EventLog();
13            Log.Source = LogName;
14            Log.WriteEntry(Message, EventLogEntryType.Error);
15        }

<三>web.config中,自定义错误信息。将应用程序配置为不向远程用户显示错误

<customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx"> 
   
<error statusCode="404" redirect="NoSuchPage.aspx"/> 
   
<error statusCode="403" redirect="NoAccessAllowed.aspx"/> 
</customErrors>

注:将 mode 属性设置为 RemoteOnly(区分大小写)。这就将应用程序配置为仅向本地用户(您和开发人员)显示详细的错误。
(可选)包括指向应用程序错误页的 defaultRedirect 属性。
(可选)包括将错误重定向到特定页的 <error> 元素。例如,您可以将标准 404 错误(未找到页)重定向到您自己的应用程序页。

<四> 包括错误处理 (MSDN)
1.在可能产生错误的任何语句前后使用 try-catch-finally 块。
2.(可选)使用 Context 对象的 UserHostAddress 属性对本地用户进行测试并相应地修改错误处理。值 127.0.0.1 等效于“localhost”并指示浏览器与 Web 服务器位于同一台计算机上。
   下面显示的是一个示例错误处理块。如果发生错误,则用有关消息的详细信息加载 Session 状态变量,然后应用程序显示可以读取 Session 变量并显示错误的页。(有意写入此错误以便不向用户提供任何可利用的详细信息。)如果用户是本地用户,则提供不同的错误详细信息。在 finally 块中,释放开放式资源。

 1try
 2{
 3    sqlConnection1.Open();
 4    sqlDataAdapter1.Fill(dsCustomers1);
 5}

 6catch (Exception ex)
 7{
 8    if(HttpContext.Current.Request.UserHostAddress == "127.0.0.1")
 9    { Session["CurrentError"= ex.Message; }
10    else
11    { Session["CurrentError"= "Error processing page."; }
12    Server.Transfer("ApplicationError.aspx");
13}

14finally 
15{
16    this.sqlConnection1.Close();
17}

您也可以创建一个这样的错误处理程序,它在页面级别上或为整个应用程序捕捉所有未处理的异常。
转载自:http://www.cnblogs.com/lanshh/archive/2006/06/29/438444.html