zoukankan      html  css  js  c++  java
  • asp.net 使用HttpModule记录全局错误

    以前使用Global.asax记录全局的错误日志觉得挺好用,但是如果一个解决方案下有N多个项目,每个下边都需要加一个并且代码都还是重复的,终于有一天无法再忍受这种模式,考虑到HttpModule,直接上代码

    CS代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web;

    namespace HttpModuleTest { /// <summary> /// /// </summary> public class CommonHttpModule : IHttpModule { public void Init(HttpApplication context) { context.Error += Request_Error; } /// <summary> /// 全局错误日志 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void Request_Error(object sender, EventArgs e) { if (string.Equals(ConfigurationUtil.GetAppSettingValue("Debug"), "true", StringComparison.OrdinalIgnoreCase)) return; var application = sender as HttpApplication; if (Equals(application, null)) return; string requestUrl = application.Request.Url.AbsolutePath; Exception appError = HttpContext.Current.Server.GetLastError(); //todo: 对错误日志进行记录 文本记录OR入库 自己选择 application.Server.ClearError(); //为了仿止URL跳转循环,一般不会出现,加上更保险 if (!string.Equals(requestUrl, "/Error.aspx", StringComparison.OrdinalIgnoreCase)) //跳转的公共错误页 application.Response.Redirect("/Error.aspx"); } public void Dispose() { } } }

    Web.config配置如下:

    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true">
        <add name="CommonHttpModule" type="HttpModuleTest.CommonHttpModule"/> 
      </modules>
    </system.webServer>
  • 相关阅读:
    JDK JRE Java虚拟机的关系
    apache和tomcat区别
    JBoss Web和 Tomcat的区别
    SOAP 与 restful service区别
    IntelliJ Idea 常用快捷键列表
    Win7用户文件夹转移
    相同IP和Mac地址的问题
    WebDriver 浅析
    Web UI 自动化测试
    python中xlrd模块的使用
  • 原文地址:https://www.cnblogs.com/bygrace/p/5690633.html
Copyright © 2011-2022 走看看