我试图拦截Web服务器上所有站点中发生的错误,以便执行其他有用的操作,例如日志记录。
作为起点,我有
Http模块类库实现为:
我创建了一个类库项目,只有一个类扩展了IHttpModule。请注意,这只是一个简化版本。
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Web;
namespace MyWebModules
{
[ComVisibleAttribute(true)]
public class MyErrorModule : IHttpModule
{
public void Dispose()
{
throw new NotImplementedException();
}
public void Init(HttpApplication context)
{
context.Error += new EventHandler(OnError);
}
private void OnError(object sender, EventArgs e)
{
throw new Exception("Custom exception from MyErrorModule");
//TODO removed the above exception and add real life code here.
}
}
}
我按照以下流程向GAC添加了dll:
使用MVC测试项目进行测试。
测试站点web.config具有以下部分。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="MyCustomWebModules" />
<add name="MyCustomWebModules" type="MyWebModules.MyErrorModule,MyWebModules" />
</modules>
</system.webServer>
当我访问测试MVC网站时,我希望看到一个错误: “来自MyErrorModule的自定义异常”
相反,我得到了这个错误:
“无法加载文件或程序集'MisWebModules'或其依赖项之一。系统无法找到指定的文件。”
答案 0 :(得分:1)
确定。我在web.config中得到了错误的版本号。我修复了它,它的工作原理。
web.config文件中的综合模块标记应包含以下GAC程序集详细信息。
以下命令可用于查看详细信息。
gacutil / l