2011-05-20 87 views
0

在IIS7集成模式下,特別是在ASP.NET MVC和.NET4中,所有模塊都運行所有請求。 runAllManagedModulesForAllRequests = 「真」。讓runAllManagedModulesForAllRequests =「false」讓我感到頭痛和太多問題,直到我感到困惑。在httpmodule中diffrentiate靜態文件和asp.net頁面 - IIS7

所以爲了簡單起見,讓我的模塊接受包括靜態文件在內的所有請求,但在像BeginRequest這樣的模塊中,我只想處理它不是靜態文件。如何過濾或檢查模塊中的這種情況?

回答

5

這並不完全回答你的問題,但由於沒有其他人回答,我有什麼可能是解決方案的一部分。

如果您將模塊分成兩部分,一部分用於託管處理程序請求,另一部分用於其他任何部分,那麼在您的web.config中添加「託管處理程序請求」模塊的位置,可以添加屬性preCondition =「 managedHandler」。因此,它應該是這樣的:

<system.webServer> 
     <modules> 
     <add name="DynamicRequestModule" type="..." preCondition="managedHandler" /> 
     <add name="StaticRequestModule" type="..." /> 

鑑於此配置,只有當請求是針對具有託管處理資源的「DynamicRequestModule」模塊將被執行。

+0

好的,也許你是對的,但我現在無法測試它。我上次做了什麼,在BeginRequest中檢查URL是否包含圖像,javascript或css文件擴展名將被忽略。因爲不是一個正確的解決方案,但它的工作原理。 – CallMeLaNN 2011-08-23 01:47:01