在我们开发系统时,一般都会记录日志信息,这样方便日后进行维护,同时如果系统出现了错误,也会方便查找,很多
系统开发时都会使用成熟的日志组件,如log4net。但是我今天要介绍的不是日志组件,而是在某些特别的情况下,我们没有
能捕获错误该怎么办???
正如标题所说的,我们可以在Global文件的Application_Error中对错误进行捕获,并记录下来。
下面就来看看下面一段示例代码:
protected void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行,获取错误
Exception objErr = Server.GetLastError().GetBaseException();
if (objErr != null)
{
string error = "Error Page: " + Request.Url.ToString() + "<br>";
if (objErr.Message != null)
{
error += "Error Message: " + objErr.Message + "<br>";
}
if (objErr.StackTrace != null)
{
error += "Stack Message:" + objErr.StackTrace + "<br>";
}
if (objErr.InnerException != null)
{
error += "InnerException" + objErr.InnerException.Message + "<br>";
}
string strSystemLog = "GlobalSystemLog.Log";
string strSystemLogpath = Server.HtmlEncode(strSystemLog);
FileInfo fi = new FileInfo(strSystemLogpath);
if (File.Exists(strSystemLogpath))
{
using (StreamWriter sw = fi.AppendText())
{
sw.WriteLine();
sw.WriteLine(DateTime.Now.ToShortTimeString() + "\n" + error + "\n");
sw.Close();
}
}
else
{
using (StreamWriter sw = fi.CreateText())
{
sw.WriteLine();
sw.WriteLine(DateTime.Now.ToShortTimeString() + "\n" + error + "\n");
sw.Close();
}
}
Server.ClearError();
Application["error"] = error;
//跳转到系统出错页面
Response.Redirect("~/SystemError.aspx");
}
}
分享到:
相关推荐
由于它的全局性质,`Application_Error`非常适合用于记录错误信息、发送警报或执行其他系统级别的错误处理任务。 在给定的示例中,我们首先创建了一个新的Web程序,并在AppEvent.aspx页面中引发一个错误。在Page_...
在***应用程序中,当发生未处理的错误时,会触发Application_Error事件。开发者可以通过重写Global.asax文件中的Application_Error方法来捕捉这些错误,并进行相应的处理。具体的实现方式是,在Global.asax文件中...
`Application_BeginRequest`事件是在每次HTTP请求开始时触发的,这使得开发者能够在请求处理之前对请求进行自定义处理。在这个阶段,可以通过检查请求中的数据来实施安全性控制措施,例如验证用户输入是否包含潜在的...
需要注意的是,在处理完错误后通常会调用`Server.ClearError()`来清除错误,这样可以避免错误被多次处理或重复显示给用户。 #### 六、局部页面错误处理 除了全局错误处理外,ASP.NET还支持局部页面级别的错误处理...
需要注意的是,`Page_Error`事件主要用于展示简单的错误信息给用户,并且在调试过程中记录错误。实际开发中应避免直接将详细错误信息暴露给用户,这可能会影响系统的安全性。 #### 四、全局级错误处理——`...
3. Application_Error:所有没有处理的错误都会导致这个方法的执行。 4. Application_Start:在程序初始化的时候执行。在 Web 应用程序的生命周期里就执行一次,这里只能放一些公用的信息,比如 ...
2. **全局应用错误处理**:在 Global.asax 文件中,我们可以重写`Application_Error`事件,这是一个全局级别的异常处理点。当应用程序中出现未处理的异常时,该事件会被触发: ```csharp protected void ...
在Global.asax文件中,你可以订阅`Application_Error`事件,这将捕获所有未在页面级别处理的错误。这是一个理想的地点来记录错误,发送通知,或者提供统一的错误处理流程。 ```csharp void Application_Error...
本示例是关于如何在ASP.NET中实现异常处理,特别是如何在出现错误时跳转到自定义的404(页面未找到)和500(服务器内部错误)错误页面。下面我们将详细探讨这一主题。 首先,我们需要理解ASP.NET中的异常处理机制。...
这通常通过重写`Global.asax`文件中的`Application_Error`事件来实现,该事件会在每次请求抛出未捕获异常时触发。 示例代码展示了一个简单的错误记录和重定向逻辑: ```csharp protected void Application_Error...
此外,还有一些与缓存和状态管理相关的事件,如 `Application_AcquireRequestState` 和 `Application_ReleaseRequestState`,它们在处理请求状态时发挥作用,确保数据的一致性和有效性。`Application_...
在.NET框架中,每当遇到未捕获的异常时,系统会自动生成一个错误页面,显示堆栈跟踪和错误信息。然而,这对于生产环境来说并不理想,因为它可能暴露敏感信息。因此,我们需要配置全局异常处理,以捕获所有异常并记录...
- `Application_Error`事件:在Global.asax文件中,可以重写`Application_Error`事件来全局处理未捕获的异常。 ```csharp protected void Application_Error(object sender, EventArgs e) { Exception ex = ...
1. **Global.asax中的Application_Error事件**:这是ASP.NET全局错误处理的核心,当在应用程序域中发生未捕获的异常时,会触发这个事件。开发者可以在Global.asax文件中订阅这个事件,然后编写代码来捕获并处理错误...
- 当请求到达ASP.NET MVC但未完全处理时,如在路由规则处理阶段,可以通过修改`web.config`文件中的`<customErrors>`元素来设置全局错误重定向。例如,将`mode`设为`On`并定义`defaultRedirect`属性,可以将所有未...
3. 全局错误处理:在Global.asax文件中,可以定义Application_Error事件,该事件会在全局范围内捕获未被特定页面处理的错误。这样可以集中地处理所有未捕获的异常,提供统一的错误响应。 4. 使用HttpModule进行错误...
在`Application_Error`事件中,我们可以捕获未处理的异常,进一步记录错误日志或者执行其他清理工作。例如: ```csharp void Application_Error(object sender, EventArgs e) { Exception ex = Server....