2012-06-13 87 views
4

是否有任何方法可以配置IIS 7.0+(或7.5+),以便某些路徑完全禁用「請求篩選」。也就是說,禁用某些路徑的IIS請求篩選

http://host.local/foo/bar.cs 

是被禁止的(因爲服務*.cs文件在applicationHost.config明確禁止的),但

http://host.local/foo/allow-all/bar.cs 

是允許的。

回答

5

在你allow-all目錄,你可以創建一個web.config文件具有以下配置:

<configuration> 
    <system.webServer> 
     <security> 
      <requestFiltering> 
       <fileExtensions> 
        <remove fileExtension=".cs" /> 
       </fileExtensions> 
      </requestFiltering> 
     </security> 
     <staticContent> 
      <mimeMap fileExtension=".cs" mimeType="text/plain" /> 
     </staticContent> 
    </system.webServer> 
</configuration> 

此配置將刪除請求過濾的.cs擴展。此外,爲了正確地爲IIS提供內容,它需要MIME類型,因此.cs擴展名以文本/純文本形式添加。

這些更改也適用於allow-all的所有子目錄。此配置適用於集成應用程序池。由於存在明確禁止使用.cs的HTTP處理程序,因此Classic可能需要進行其他更改。

+0

這很好,但我沒有'/ allow-all'路徑本身:它是一個由ASP.NET MVC Routing處理的動態URL。這在這種情況下是可能的嗎? –

+0

@Anton如果它是動態的,那麼最好嘗試自己提供服務 - 爲一些腳本創建url重寫規則,該腳本將讀取併發送所請求文件的內容到瀏覽器中。我只是不確定是否在請求過濾之前或之後執行URL重寫模塊 - 我認爲之後(對於真實/現有文件),但對於不存在的URL可能不是這種情況。 – LazyOne

+0

@LazyOne URL重寫似乎發生在請求過濾之後。或者,至少我安裝的自定義處理程序是窒息的,直到我在我的過濾器中添加以查找相關路徑。 – jklemmack