2010-01-21 36 views
5

我有一個簡單的HTTPModule,它執行一些自定義會話狀態管理。由HTTPModule攔截的JS,圖像和CSS

public void Init(HttpApplication context) 
     { 
      context.AcquireRequestState += new EventHandler(ProcessBeginRequest); 
      ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In Init " + HttpContext.Current.Request.Url.AbsoluteUri); 
     } 

public void ProcessBeginRequest(object sender, EventArgs e) 
     { 
      HttpApplication application = sender as HttpApplication; 
      ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest "); 
      if (application != null) 
      { 
       string requestURL = application.Context.Request.Url.ToString(); 
       ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest " + requestURL); 
      } 
      return; 
     } 

當我運行這段代碼使用斷點,我看到這個模塊得到了調用,即使對於像圖片,JS和CSS靜態文件。有沒有人經歷過這個?我想HTTP模塊只是掛在http管道中的事件在asp.net頁面上。他們是否也接觸到靜態資源?還是僅僅與卡西尼?

環境:VS2008 - 卡西尼服務器

PS:我與Win2k8 IIS7在我們的沙盒(還挺新)嘗試,並試圖將其寫入到一個日誌文件(因爲我們沒有VS那裏),但無法寫入日誌文件。確定它的一些寫權限問題。任何人都可以指向我一些資源,告訴我如何設置W2k8中IIS7運行ASP.net時對目錄的寫權限

Edit1:據我所知,使用集成管道將擴展靜態和託管資源的http管道 http://aspnet.4guysfromrolla.com/articles/122408-1.aspxhttp://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/

我們在我們的產品中使用經典的管道。但仍然有興趣瞭解其他人的經歷。

問題2:在集成模式下使用IIS7會降低性能嗎?假設你有幾個模塊與管道連接,性能影響有多大?如果有人能指出我爲此完成的一些基線研究,那將會很好。

回答

12
+0

謝謝。將此添加到http://cassinidev.codeplex.com的待辦事項 – 2010-07-24 19:40:11

+0

您的「自我註釋」是純金! Upvotes! – jerhewet 2011-08-23 21:05:35

+0

有沒有一種很好的方式在IIS6中實現這一點? 我知道它與這個問題略有無關,但是對於像我這樣的人來說,由於僅是問題標題,這將是一個很好的參考。 – 2011-08-25 15:42:56

0

是的,它將被調用任何類型的文件。

在這些模塊中通常會篩選出您對前例不感興趣的任何內容。通過檢查HttpContext.Request.Url.AbsolutePath是否包含SharePoint下的'/ _layouts'。

+0

有沒有辦法配置模塊,他們只得到迷上了管道的特定擴展名(如ASPX或ASMX或者我自定義的ashx )? – ram 2010-01-21 21:06:28

+0

這個答案是專門爲ASP.NET開發Web服務器(卡西尼) - 你的問題提到IIS7和卡西尼。卡西尼將所有請求路由到任何HttpModules。請注意,這是不同於IIS6或IIS7的行爲(需要不同的配置才能獲得相同的行爲) – Adam 2010-07-30 19:31:28