2011-01-24 69 views
1

我爲自動生成文件創建自定義HTTP處理程序,我想告訴IIS7像普通靜態文件一樣提供當前請求,因爲我需要使用IIS和web.config文件來控制當前請求文件的壓縮設置和任何其他HTTP標頭。如何從IIS7和ASP.NET 4.0中的HTTP處理程序調用靜態文件處理程序?

我知道。 ASP.net中有一個名爲[StaticFileHandler] [1]的內部類。但我無法訪問它。或者你有任何其他的方式來這樣工作。 [1]:http://msdn.microsoft.com/en-us/library/ms404287.aspx

回答

4

這應該是很容易複製StaticFileHandler

  1. 下載反光
  2. 開放的System.Web
  3. 搜索StaticFileHandler
  4. Open方法ProcessRequestInternal()
  5. 開放方法SendFile()

複製你需要的位,基本上它歸結爲這種方法:

context.Response.TransmitFile(physicalPath, offset, length); 
0

This blog post描述了當StaticFileHandler將用於:

如果您沒有修改任何(如作爲緩存),並且您還沒有向響應流寫入內容,並且響應流沒有過濾器(如壓縮),並且您正在運行過程中在IIS6中然後請求被傳回給IIS進行處理。

據我測試,這對IIS7也是如此。我不太確定如何,但是如果你不在自己的處理程序中處理某個請求,它應該傳遞給IIS。任何人都可以證實嗎?

至少,以上提示爲我的靜態文件工作。