我創建了一個簡單的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