webform配置全局异常处理

 

 

近期维护一些老项目,是用webform写的,发现没有记日志,对异常处理也没有统一管理所以先加一个全局异常处理

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="errorCatchModule" type="SupplierPortal.Common.ModulesHandlerHelper, SupplierPortal" />
</modules>
</system.webServer>

一开始出现了问题是对这个配置不熟

先解释一下<modules runAllManagedModulesForAllRequests="true">
<add name="errorCatchModule" type="SupplierPortal.Common.ModulesHandlerHelper, SupplierPortal" />
</modules>

主要是这句

 add后面的name是你自己定义的随便一个名字,type 是关键逗号以前是你写的类, 逗号以后是dll的名称如果不知道可以看看生产后的bin里面dll是啥

之后就是写 全局异常类了

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

namespace SupplierPortal.Common
{
    public class ModulesHandlerHelper : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.Error += new EventHandler(context_Error);
        }

        public void context_Error(object sender, EventArgs e)
        {
            //此处处理异常
            HttpContext ctx = HttpContext.Current;
            HttpResponse response = ctx.Response;
            HttpRequest request = ctx.Request;

            //获取到HttpUnhandledException异常,这个异常包含一个实际出现的异常
            Exception ex = ctx.Server.GetLastError();
            Log log = LogFactory.GetLogger("ModulesHandlerHelper");
            log.Error(ex);
            //实际发生的异常
            Exception iex = ex.InnerException;
            response.Write("<script>window.location.href='../Pages/ErrorMessagePage.aspx'</script>");
            //response.Write("来自ErrorModule的错误处理<br />");
            //response.Write(iex.Message);

            ctx.Server.ClearError();
        }
        public void Dispose() { }
    }
}

  

 

转载于:https://www.cnblogs.com/barnet/p/6907279.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值