簡體   English   中英

HttpModule似乎不起作用

[英]HttpModule doesn't seem to work

我創建了一個簡單的HttpModule來記錄我現有的webservice的用法。 有一個包含單個類的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之后,我將它添加到webservice的bin文件夾中,並在webservice的web.config中添加:

<system.web>
    <httpModules>
       <add name="TrackingModule" type="WebserviceTrackingModule.TrackingModule, WebserviceTrackingModule"/>

這在我的計算機上工作正常,但當我將其復制到生產服務器時,沒有任何反應。 數據庫中沒有新條目,ExceptionManager沒有記錄任何條目。 好像它根本不在那里。

我能錯過什么?

編輯:執行另一個測試后,我可以添加它,當我為具有自己的頂級虛擬目錄的webservice添加它時它可以工作。 它不適用於駐留在作為另一個虛擬目錄的子文件夾的虛擬目錄中的Web服務。

我知道HttpModules設置正在被子目錄繼承,但看起來父目錄的存在會妨礙它。

我相信我找到了更好的解決方案。 在運行時而不是在Web配置中附加模塊。 查看Rick Strahl的博客文章了解詳情。

好的,我正在回答我自己的問題。

在子目錄的web.config中定義<httpModules>時,即使將子目錄配置為應用程序,它也不起作用。 到目前為止,我找到的唯一解決方案是在根應用程序(父目錄)的web.config中的<location>標記內定義它們。

我不喜歡它:(

我在http://forums.iis.net/t/1151924.aspx找到了這個問題的答案

哦,一點點的消除過程永遠不會讓我失望。

在盯着3.5相關的web.config代碼后,我意識到我的模塊需要添加到新的部分:

<system.webserver>

<模塊>

而不是system.web ...至少它現在正在工作。

所以翻譯一下:

如果您遇到httphandlers問題

將您的處理程序添加到system.webserver中的modules節點,並查看是否有效復制用於scriptmodule的格式。

這有用嗎?

<add name="TrackingModule" type="WebserviceTrackingModule.TrackingModule" />

是否肯定會為每個請求調用context_BeginRequest方法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM