- 浏览: 149344 次
- 性别:
- 来自: 北京
文章分类
最新评论
ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件、Application_Error 事件以及应用程序配置文件 (Web.config)。
如果您不调用 Server.ClearError 或者捕获 Page_Error 或 Application_Error
事件中的错误,则将根据 Web.config 文件的 <customErrors> 部分中的设置处理错误。在
<customErrors> 部分,可将重定向页指定为默认的错误页 (defaultRedirect) 或者根据引发的 HTTP
错误代码指定特定页。您可使用此方法自定义用户收到的错误信息。
尽管您可在 <customErrors> 部分中 defaultRedirect 属性的值中引用默认的错误页,但是您还可根据引发的 HTTP 错误代码指定要重定向到的特定页。<error> 子元素允许使用此选项
<customErrors mode="On" defaultRedirect="ApplicationErroy.aspx">
<error statusCode="403" redirect="403.htm"/>
<error statusCode="404" redirect="404.htm"/>
<error statusCode="500" redirect="500.htm"/>
</customErrors>
asp.net自定义错误处理页面方法一
1、添加Web.config, < system.web>< /system.web>中添加< customErrors mode="On"
defaultRedirect="ApplicationErroy.aspx" >< /customErrors>节点,
2、添加错误处理页面:ApplicationErroy.aspx调用下面的方法:
private void DealErroy()
{
HttpException erroy = new HttpException();
string strCode = erroy.ErrorCode.ToString();
string strMsg = erroy.Message;
erroy.HelpLink = "sss";
Response.Write("ErrorCode:" + strCode + "< br>");
Response.Write("Message:" + strMsg + "< br>");
Response.Write("HelpLink:" + erroy.HelpLink + "< br>");
Response.Write("Source:" + erroy.Source + "< br>");
Response.Write("TargetSite:" + erroy.TargetSite + "< br>");
Response.Write("InnerException:" + erroy.InnerException + "< br>");
Response.Write("StackTrace:" + erroy.StackTrace + "< br>");
Response.Write("GetHtmlErrorMessage:" + erroy.GetHtmlErrorMessage() + "< br>");
Response.Write("erroy.GetHttpCode().ToString():" + erroy.GetHttpCode().ToString() + "< br>");
Response.Write("erroy.Data.ToString()::" + erroy.Data.ToString() + "< br>");
}
private void DealErroy()
{
HttpException erroy = new HttpException();
string strCode = erroy.ErrorCode.ToString();
string strMsg = erroy.Message;
erroy.HelpLink = "sss";
Response.Write("ErrorCode:" + strCode + "< br>");
Response.Write("Message:" + strMsg + "< br>");
Response.Write("HelpLink:" + erroy.HelpLink + "< br>");
Response.Write("Source:" + erroy.Source + "< br>");
Response.Write("TargetSite:" + erroy.TargetSite + "< br>");
Response.Write("InnerException:" + erroy.InnerException + "< br>");
Response.Write("StackTrace:" + erroy.StackTrace + "< br>");
Response.Write("GetHtmlErrorMessage:" + erroy.GetHtmlErrorMessage() + "< br>");
Response.Write("erroy.GetHttpCode().ToString():" + erroy.GetHttpCode().ToString() + "< br>");
Response.Write("erroy.Data.ToString()::" + erroy.Data.ToString() + "< br>");
}
这种方法不能完整地显示错误信息;
asp.net自定义错误处理页面方法二
1、添加Web.config, < system.web>< /system.web>中添加< customErrors mode="On"
defaultRedirect="ApplicationErroy.aspx" >< /customErrors>节点,
2、添加Global.asax文件,找到Application_Error事件,加入以下代码:
// 这是添加了一个全局应用程序类 在 Application_Error 事件中处理错误页面 和 web.config 没有关系 即使没有 web.config 也是可以定位到错误页面
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
Exception erroy = Server.GetLastError();
string err = " 出错页面是: " + Request.Url.ToString() + "</br>" ;
err += " 异常信息: " + erroy.Message + "</br>" ;
err += "Source:" + erroy.Source + "</br>" ;
err += "StackTrace:" + erroy.StackTrace + "</br>" ;
// 清除前一个异常
Server.ClearError();
// 此处理用 Session["ProError"] 出错。所以用 Application["ProError"]
Application["erroy" ] = err;
// 此处不是 page 中,不能用 Response.Redirect("../frmSysError.aspx");
System.Web.HttpContext .Current.Response.Redirect(HttpContext .Current.Request.ApplicationPath + "/ApplicationErroy.aspx" );
}
2、添加错误处理页面:ApplicationErroy.aspx 加入以下代码;
protected void Page_Load(object sender, EventArgs e)
{
// 显示程序中的错误码
if (!IsPostBack)
{
// 显示程序中的错误码
if (Application["erroy" ] != null )
{
Response.Write(Application["erroy" ].ToString());
}
}
}
这种方法能完整地显示错误信息,
最好的办法还是两种方法一起用最好!
另:web.config中也可以把
<customErrors mode="On" defaultRedirect="ApplicationErroy.aspx">
<error statusCode="403" redirect="403.htm"/>
<error statusCode="404" redirect="404.htm"/>
<error statusCode="500" redirect="500.htm"/>
</customErrors>
添加进去
http错误代码含义:
"403" : Forbidden
"404" : Not Found
"500" : Internal Server Error
http错误代码含义大全详解 http://hi.baidu.com/ren_long_/blog/item/033563657a00befaf6365450.html
方法三Page_Error事件
Page_Error 事件提供一种捕获在页级别出现的错误的方法。您可以只是显示错误信息(正如下面的示例代码所示),也可以记录事件或执行某个其他操作。
备注:此示例在浏览器中显示详细的错误信息,提供此示例只是为了进行说明。向应用程序的最终用户显示详细信息(尤其是该应用程序在 Internet 上运行时)一定要小心。更适当的做法是向用户显示一条消息,告知已发生错误,然后将具体的错误详细信息记录在事件日志中。
本
示例引发一个强迫错误发生在 Page_Load 事件中的空异常。按照以下步骤可创建将测试 Page_Error 事件的初始页。 1.
按照以下步骤将名为 PageEvent.aspx 的新文件添加到项目中: a. 打开 Microsoft Visual Studio .NET。
b. 在"解决方案资源管理器"中,右键单击该项目节点,指向添加,然后单击添加 Web 窗体。
c. 在名称文本框中,键入 PageEvent.aspx,然后单击打开。
将以下代码添加到 PageEvent.aspx 中:
<script language=C# runat="server">
void Page_Load(object sender, System.EventArgs e)
{
throw(new ArgumentNullException());
}
public void Page_Error(object sender,EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string err = "<b>Error Caught in Page_Error event</b><hr><br>" +
"<br><b>Error in:</b>" + Request.Url.ToString() +
"<br><b>Error Message:</b>" + objErr.Message.ToString()+
"<br><b>Stack Trace:</b><br>" +
objErr.StackTrace.ToString();
Response.Write(err.ToString());
Server.ClearError();
}
</script>
从文件菜单中,单击保存 PageEvent.aspx。
右键单击该页,然后单击在浏览器中查看以运行该页。请注意,将按照代码规范引发和报告错误。
备注:您可能注意到代码发出对 Server.ClearError 的调用。这将防止错误继续到要被处理的 Application_Error 事件中。
此外,您还应记下 @ Page 指令中的 Inherits 属性。如果已经设置 Inherits,则必须首先生成项目,然后再浏览到该页。如果不首先生成项目,将看到下面的错误信息: 'Project.PageEvent' is not a valid type
(转)
ASP.NET 在处理和响应错误的方式上进行了若干改进。在传统的 ASP 中,是用"On Error Resume Next"(或在 Jscript 中用 try-catch 块)处理错误的。或者,如果您运行的是 Microsoft Internet Information Services (IIS) 5.0,则使用 ASPError 对象创建自定义的错误报告页。然而,这些方法都有其局限性。
ASP.NET 提供了在运行 ASP.NET 应用程序时可能出现的错误的若干处理和响应级别。ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件、Application_Error 事件以及应用程序配置文件 (Web.config)。
本文演示如何在 ASP.NET 应用程序中使用这些新功能。尽管本文由于与 ASP.NET 直接相关而介绍了如何提供自定义错误页和一般错误报告,但是它并不介绍其他错误处理方法,如 try-catch-finally 块和公共语言运行库 (CLR) 异常系统。
如何使用 Page_Error 事件
Page_Error 事件提供一种捕获在页级别出现的错误的方法。您可以只是显示错误信息(正如下面的示例代码所示),也可以记录事件或执行某个其他操作。
备注:此示例在浏览器中显示详细的错误信息,提供此示例只是为了进行说明。向应用程序的最终用户显示详细信息(尤其是该应用程序在 Internet 上运行时)一定要小心。更适当的做法是向用户显示一条消息,告知已发生错误,然后将具体的错误详细信息记录在事件日志中。
本示例引发一个强迫错误发生在 Page_Load 事件中的空异常。按照以下步骤可创建将测试 Page_Error 事件的初始页。 1.
按照以下步骤将名为 PageEvent.aspx 的新文件添加到项目中: a. 打开 Microsoft Visual Studio .NET。
b. 在"解决方案资源管理器"中,右键单击该项目节点,指向添加,然后单击添加 Web 窗体。
c. 在名称文本框中,键入 PageEvent.aspx,然后单击打开。
2. 将以下代码添加到 PageEvent.aspx 中:
<script language=C# runat="server">
void Page_Load(object sender, System.EventArgs e)
{
throw(new ArgumentNullException());
}
public void Page_Error(object sender,EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string err = "<b>Error Caught in Page_Error event</b><hr><br>" +
"<br><b>Error in:</b>" + Request.Url.ToString() +
"<br><b>Error Message:</b>" + objErr.Message.ToString()+
"<br><b>Stack Trace:</b><br>" +
objErr.StackTrace.ToString();
Response.Write(err.ToString());
Server.ClearError();
}
</script>
3. 从文件菜单中,单击保存 PageEvent.aspx。
4. 右键单击该页,然后单击在浏览器中查看以运行该页。请注意,将按照代码规范引发和报告错误。
备注:您可能注意到代码发出对 Server.ClearError 的调用。这将防止错误继续到要被处理的 Application_Error 事件中。
此外,您还应记下 @ Page 指令中的 Inherits 属性。如果已经设置 Inherits,则必须首先生成项目,然后再浏览到该页。如果不首先生成项目,将看到下面的错误信息: 'Project.PageEvent' is not a valid type
如何使用 Application_Error 事件
与 Page_Error 事件相类似,您可使用 Application_Error 事件捕获发生在应用程序中的错误。由于事件发生在整个应用程序范围内,因此您可记录应用程序的错误信息或处理其他可能发生的应用程序级别的错误。
下面的示例基于前面的 Page_Error 事件代码示例,如果 Page_Load 事件中的错误未在 Page_Error
事件中捕获,将引发异常。Application_Error 事件在应用程序的 Global.asax
文件中进行指定。为简单起见,本节中的步骤创建一个要在其中引发异常的新页,捕获 Global.asax 文件的 Application_Error
事件中的错误,并将该错误写入事件日志中。下面的步骤演示如何使用 Application_Error 事件: 1. 将名为
AppEvent.aspx 的新文件添加到项目中:
2. 将以下代码添加到 AppEvent.aspx 中:
<script language=C# runat="server">
void Page_Load(object sender, System.EventArgs e)
{
throw(new ArgumentNullException());
}
</script>
3. 从文件菜单中,单击保存 AppEvent.aspx。
4. 将 Application_Error 事件添加到
Global.asax 文件中以捕获在 AppEvent.aspx 页的 Page_Load 事件中引发的错误。注意,您必须为
System.Diagnostics 名称空间将另一条 using 语句添加到 Global.asax,才能使用事件日志。
将以下代码添加到 Global.asax 文件中:
using System.Diagnostics;
protected void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string err = "Error Caught in Application_Error event/n" +
"Error in:" + Request.Url.ToString() +
"/nError Message:"+ objErr.Message.ToString() +
"/nStack Trace:"+ objErr.StackTrace.ToString();
EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
Server.ClearError();
//additional actions...
}
5. 保存 Global.asax 文件。
6. 在 Visual Studio .NET 中,在生成菜单上,单击生成。
7.
右键单击该页,然后单击在浏览器中查看。在这种情况下该页将为空白,但是您应该注意到在事件日志中已添加了一个新项。本示例在应用程序日志中生成一个项,
可从事件查看器访问应用程序日志。在记录错误之后,您可能希望将用户重定向到另一个更用户友好的错误页或者根据需要执行一些其他操作。
如何使用 Web.config 文件
如果您不调用 Server.ClearError 或者捕获 Page_Error 或
Application_Error 事件中的错误,则将根据 Web.config 文件的 <customErrors>
部分中的设置处理错误。在 <customErrors> 部分,可将重定向页指定为默认的错误页 (defaultRedirect)
或者根据引发的 HTTP 错误代码指定特定页。您可使用此方法自定义用户收到的错误信息。
如果发生在应用程序以前的任一级别都未捕获到的错误,则显示这个自定义页。本节演示如何修改 Global.asax 文件,以便从不调用
Server.ClearError。因此,错误在作为捕获错误的最后一点的 Web.config 文件中进行处理。 1. 从上一个示例中打开
Global.asax 文件。
2. 将 Server.ClearError 行注释掉,以便确保错误出现在 Web.config 文件中。
3. 将所作更改保存到 Global.asax 中。代码看起来应类似如下形式:
using System.Diagnostics;
protected void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string err = "Error Caught in Application_Error event/n" +
"Error in:" + Request.Url.ToString() +
"/nError Message:"+ objErr.Message.ToString() +
"/nStack Trace:"+ objErr.StackTrace.ToString();
EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
//Server.ClearError();
//additional actions...
}
4. 将以下代码添加到 <customErrors> 部分,以便将用户重定向到自定义页:
<customErrors defaultRedirect="errorStatus.htm" mode="On">
</customErrors>
备注:必须修改 defaultRedirect 属性中的文件路径,以便它引用相关的 Web 服务器和应用程序名称。
5.
因为在此级别捕获的错误会发送到默认的错误页,所以,必须创建一个名为 ErrorStatus.htm
的错误页。请记住,您要使用此方法来控制向用户呈现的内容,因此本示例使用 .htm 页作为错误页。将以下代码添加到 ErrorStatus.htm
中:
<HTML>
<HEAD>
<TITLE></TITLE>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
</HEAD>
<BODY>
<b>Custom Error page!</b>
<br>
You have been redirected here from the <customErrors> section of the
Web.config file.
</BODY>
</HTML>
6. 若要测试该代码,请保存这些文件,生成项目,然后在浏览器中查看 AppEvent.aspx。请注意,在引发错误时,您将被重定向到 ErrorStatus.htm 页。
尽管您可在 <customErrors> 部分中 defaultRedirect 属性的值中引用默认的错误页,但是您还可根据引发的 HTTP 错误代码指定要重定向到的特定页。<error> 子元素允许使用此选项。例如:
<customErrors defaultRedirect="errorStatus.htm" mode="On">
<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
备
注:在 <customErrors> 部分的 defaultRedirect 中指定的页是一个 .htm 文件。如果您打算在
.aspx 页中使用 GetLastError (正如 Page_Error 和 Application_Error
示例那样),则在进行重定向之前,必须将异常存储在会话变量或某个其他方法中。
请注意,<customErrors> 部分包括设置为 On 的 mode 属性。mode
属性用于控制错误重定向发生的方式。例如,如果您正开发应用程序,则很可能希望查看实际的 ASP.NET
错误信息,并且不希望被重定向到更用户友好的错误页。mode 属性包括以下设置: ? On:未被处理的异常将用户重定向到指定的
defaultRedirect 页。此模式主要用于生产。
? Off:用户收到异常信息而不是被重定向到 defaultRedirect 页。此模式主要用于开发。
? RemoteOnly:只有在本地计算机上访问该站点的用户(通过使用 localhost)才能收到异常信息。所有其他用户都被重定向到 defaultRedirect 页。此模式主要用于调试。
发表评论
-
asp.net导出csv的例子
2012-10-26 14:35 3397http://wiki.asp.net/page.aspx ... -
在Visual Studio 2010中使用Visual Leak Detector
2012-10-26 14:08 830http://blog.csdn.net/xinyaping/ ... -
[科普小短文]在C#中调用C语言函数 (Linux & Mono版) 转
2012-10-26 13:57 1392http://blog.csdn.net/xinyaping/ ... -
在 Visual Studio 2012 中创建 ASP.Net Web Service 转
2012-10-26 13:53 1204http://blog.csdn.net/xinyaping/ ... -
Example: Receive HTTP Post via ASP.Net Generic Handler 转
2012-10-26 13:41 1110假设我们要提供一个小小的服务,采用HTTP协议进行通讯,客 ... -
错误时捕获和响应错误
2012-10-24 20:49 905ASP.NET 提供三种用于在出现错误时捕获和响应错误的主 ... -
asp.net 中的错误跳转 customerrors 对html文件不起作用 转载
2012-10-24 20:08 1358一般对于asp.net的网 ... -
ASP.NET页面错误处理及邮件发送简易方案
2012-10-18 16:58 8901包含页面:Default.aspx,Error.aspx ... -
ASP.NET中缓存(cache)的控制方法
2012-10-18 13:30 1503... -
ASP.NET页面执行顺序
2012-10-17 20:08 7701.对象初始化(OnInit方法) ... -
asp.net 格式化时间日期
2012-10-17 15:59 1170asp.net 格式化时间日期 ...
相关推荐
ASP.NET MVC 自定义错误页面真的简单吗 ASP.NET MVC 中自定义错误页面是指在 ASP.NET MVC 应用程序中,当出现错误时,返回给用户的错误页面。这种错误页面可以是自定义的,以提供更友好的错误信息和更好的用户体验...
通过学习和理解这些代码,你可以更好地掌握ASP.NET自定义分页的实现方式。 总的来说,自定义分页在ASP.NET中是一个相对复杂但必不可少的功能。它需要开发者具备良好的数据库操作能力,以及对ASP.NET页面生命周期的...
ASP.NET自定义验证控件是开发Web应用程序时常用的一种技术,它允许开发者根据特定业务需求创建个性化的验证规则。在ASP.NET中,验证控件是一个非常重要的组成部分,它确保用户输入的数据符合预设的格式和标准,从而...
在这个场景中,"超强的ASP.NET自定义客户端验证控件"指的是开发者可以创建自己的验证控件,以实现更灵活、更个性化的用户输入验证。 在ASP.NET中,验证是非常重要的一环,它确保了用户提交的数据符合预设的业务规则...
综上所述,`asp.net 异常处理跳转自定义错误页面Demo`是一个实用的实践,它教会我们如何在ASP.NET应用程序中捕获和处理异常,以及如何创建和显示自定义的404和500错误页面。通过这个示例,开发者可以更好地控制用户...
在标题提到的"asp.net自定义控件"中,我们主要关注的是如何在ASP.NET环境中创建和使用自定义控件。自定义控件通常由三部分组成:外观(Markup),行为(Code-Behind)和属性(Properties)。开发者可以通过继承...
`Web.Config`是ASP.NET应用程序的配置文件,它包含了诸如连接字符串、身份验证模式、错误处理等设置。在自定义控件的上下文中,可能有特定的配置节来设定控件的行为或者引用自定义控件的命名空间。 `Default.aspx....
对于提供的压缩包文件,"asp.net自定义分页控件"很可能包含了源码示例,其中包括了上述所有步骤的实现。下载后,你可以通过阅读代码和使用说明来学习如何构建自定义分页控件。如果遇到问题,可以联系作者提供的QQ...
ASP.NET 自定义验证码技术是为了解决网站安全性问题而设计的一种方法。验证码的主要目标是防止自动化的机器人程序(如爬虫)进行恶意操作,如批量注册、刷票等。在 ASP.NET 中,我们可以创建自己的验证码类,以实现...
### ASP.NET自定义控件教程知识点详解 #### 一、ASP.NET自定义控件概述 **自定义控件**是在ASP.NET中为了满足特定需求而创建的控件。相较于标准控件,自定义控件提供了更高的灵活性和定制能力。自定义控件可以是**...
"省市区三级联动-asp.net自定义控件.rar"就是一个针对这种情况的解决方案,它使用了.NET Framework 2.5进行开发。 首先,我们要理解什么是三级联动。在Web界面中,三级联动通常指的是一个下拉列表(或选择框)中的...
ASP.NET允许自定义全局异常处理,确保即使发生错误也能提供友好的错误页面或日志记录,帮助开发者追踪和修复问题。 9. **性能问题**:ASP.NET应用可能出现性能瓶颈,如内存泄漏、线程阻塞或数据库查询效率低下。...
在上一篇博文“.net自定义错误页面实现”中,已经探讨了如何在.NET中实现自定义错误页面。基本的实现方法是在Web.config文件中进行错误处理的配置,将特定的HTTP错误代码映射到自定义的错误页面上。这可以简单地通过...
*** MVC 自定义错误页面是开发者在处理应用程序中出现的异常和错误时常用的机制。它允许开发者为应用程序中不同的错误状态码指定自定义的错误页面,如404页面未找到和500页面服务器内部错误。这样做可以让用户看到...
在解压后,开发者或学习者可以深入研究各个文件和目录,了解系统架构、数据库设计、页面逻辑、以及如何使用ASP.NET技术实现各种功能。 知识点详解: 1. **ASP.NET框架**:ASP.NET提供了一整套构建Web应用的工具和...
.net中自定义异常页面的重定向都是通过web.config配置页面配置实现,其具体的实现方式有两种方式,下面话不多说了,来一起看看详细的介绍吧。 其一、通过节点system.web新增customErrors配置节点实现 IIS环境需求:...
- 通常,自定义错误页面会放在一个特定的控制器(如`ErrorController`)和视图(如`Error.cshtml`或`CustomErrorPage.cshtml`)下。这样可以创建具有明确布局和设计的错误页面,同时提供有关错误的有用信息,如错误...
在 MVC Controller 中,我们可以创建一个 ErrorsController 来处理自定义错误页面。例如: ``` public class ErrorsController : Controller { [Route("errors/{statusCode}")] public IActionResult CustomError...
3. 在ASP.NET页面中添加FastReport的WebViewer控件,用于显示预览。 4. 实现打印逻辑,处理用户的打印请求。 通过上述内容,我们可以了解到FastReport ASP.NET在报表打印和预览方面的强大功能。无论是对于开发人员...
Web.config 文件是 ASP.NET 应用程序的配置文件,通过它可以设置自定义错误页面的跳转规则。 在自定义错误页面配置中,需要设置 `customErrors` 节点,通过 `mode` 属性设置错误模式为 `On`,并设置 `...