2013-05-10 46 views
0

我已經定義了一個HTTP處理程序,並在我的web.config中添加一個條目ASP.NET的HttpHandler VS IIS處理程序

<add verb="GET" path="TestApp/*" type="TestApp.TestHandler, TestWebApp" /> 

這個工程,我所期望的,當我遇到靜態資源如JPG,PNG文件EXCEPT

我需要我的處理程序來處理也像TestApp/logo.gif路徑,但似乎IIS有StaticHandler註冊攔截這些請求

有沒有辦法爲我的ASP.NET的HttpHandler有機會僅處理路徑Tes的靜態資源請求tApp/*但讓IIS StaticHandler處理一切?

是的,我知道,讓IIS處理靜態資源有自己的處理程序更快,更高效

+0

嘗試設置path =「TestApp /*.*」。我不認爲你需要改變任何在IIS中的這個工作。 – AContractor 2013-05-10 13:47:00

回答

1

你的處理程序,如果你在集成的管道模式下運行將攔截這些請求:

<system.webServer> 
    <handlers> 
     <add name="TestHandler" path="TestApp/*" verb="GET" type="TestApp.TestHandler, TestWebApp" /> 
    </handlers> 
</system.webServer> 

如果您在經典管道模式運行,你將不得不以使這些請求註冊在IIS中ISAPI篩選器通過託管處理程序。

+0

我在Classic Pipeline模式下運行 - 我猜我唯一的選擇是在IIS中註冊一個ISAPI篩選器。 – blue18hutthutt 2013-05-10 14:12:05

+1

是的,這是唯一的選擇。順便說一句,你有什麼理由在IIS7中以經典模式運行?這在IIS6中是可行的,但在您的位置我肯定會考慮切換到集成管道模式。 – 2013-05-10 14:23:18

+0

這是一個在官僚環境中的大型現有應用程序,不幸的是,在沒有長時間的競選活動的情況下禁止對生態系統進行更改,並且需要提交的表單上的表單需要提交 – blue18hutthutt 2013-05-10 14:28:50

1

你應該添加到您的web.config:

<modules runAllManagedModulesForAllRequests="true" /> 

這將確保即使請求正在通過.net管道傳遞靜態文件。

+2

我建議不要這樣做。如果您在集成管道模式下運行,則最好僅爲特定路徑註冊處理程序,而不是通過管理管道進行所有請求,這可能會對應用程序產生性能影響。 – 2013-05-10 13:48:14

+1

那麼,他提到「我意識到讓IIS用自己的處理程序處理靜態資源更快,更高效」,所以我就這麼說這是一種可能性。 – Kenneth 2013-05-10 13:53:07