我创建了一个简单的HttpModule来记录我现有的webservice的用法。还有一个包含单个类HttpModule似乎不起作用
public class TrackingModule : System.Web.IHttpModule
{
public TrackingModule(){}
public void Init(System.Web.HttpApplication context)
{
context.BeginRequest+=new EventHandler(context_BeginRequest);
}
public void Dispose()
{
}
private void context_BeginRequest(object sender, EventArgs e)
{
try
{
Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(new Exception("Log attept"));
HttpApplication app = (HttpApplication)sender;
string method = app.Request.RawUrl;
SaveUseToDatabase(app.Request.UserHostAddress, method);
}
catch(Exception ex)
{
try
{
Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
}
catch{}
}
}
}
一个dll编译的dll我把它添加到Web服务的bin文件夹和Web服务的web.config后,我补充一下:
<system.web>
<httpModules>
<add name="TrackingModule" type="WebserviceTrackingModule.TrackingModule, WebserviceTrackingModule"/>
这在我的电脑上工作正常,但是当我将它复制到生产服务器,没有任何反应。数据库中没有新条目,没有条目由ExceptionManager记录。仿佛它根本就没有。
我可以错过什么?
编辑: 执行另一个测试后,我可以补充说,它适用于具有自己的顶级虚拟目录的web服务时。它不适用于位于另一个虚拟目录的子文件夹的虚拟目录中的Web服务。
我知道HttpModules设置正在被子目录继承,但它看起来像父目录存在的方式。
我有一个WCF服务应用程序,它是主站点下的虚拟目录。通过web.config添加我的模块导致了一个IIS 500错误,没有任何关于错误的细节(我期望在Windows事件日志中看到一些东西,但什么都没有)。 Rick Strahl的技术非常完美(尽管我花了一段时间才意识到必须从Studio中添加一个“全局应用程序类”,并且Global.asax文件必须部署到我的站点)。 – 2013-08-23 21:37:33