既存のWebサービスの使用をログに記録するための単純なHttpModuleを作成しました。単一のクラスを含むdllがあります
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をコンパイルした後、それをWebサービスのbinフォルダーに追加し、webserviceのweb.configに次のように追加します。
<system.web>
<httpModules>
<add name="TrackingModule" type="WebserviceTrackingModule.TrackingModule, WebserviceTrackingModule"/>
これは私のコンピューターでは正常に機能しますが、本番サーバーにコピーしても何も起こりません。データベースに新しいエントリはなく、ExceptionManagerによってログに記録されたエントリもありません。まるでそこにないかのように。
何が欠けている可能性がありますか?
編集:別のテストを実行した後、独自のトップレベルの仮想ディレクトリを持つWebサービスに追加したときに機能することを追加できます。別の仮想ディレクトリのサブフォルダである仮想ディレクトリに存在するWebサービスでは機能しません。
HttpModules設定がサブディレクトリに継承されていることは知っていますが、親ディレクトリの存在が邪魔になっているようです。