2016-07-29 46 views
0

我最近試圖將WebMarkupMin,一個運行時html縮小庫,整合到我的網站(C#,IIS 8,MVC 4)中。我們啓用了IIS壓縮。我發現IIS實際上壓縮了動作過濾器輸出流,這意味着當我嘗試在動作過濾器中縮小我的html時,我試圖縮小已壓縮的內容。在運行時過程的哪一點IIS壓縮輸出?

問題:在運行時過程的什麼時候IIS壓縮輸出?有沒有辦法使用mvc動作過濾器修改html ouptut而不禁用IIS壓縮?

回答

1

ASP.NET MVC輸出的IIS動態壓縮在管道中運行得相當晚。在我的測試中,它是349個管道項目中的第315個,並且在所有的asp.net模塊運行之後。

要查看IIS管道中已執行模塊的順序,請爲您的站點設置失敗請求跟蹤(FREB)並查看日誌。

我會說你的MVC行動過濾器沒有辦法告訴壓縮模塊不壓縮。

但你可以在網址的基礎上把壓縮關閉:

在你的web配置使用這樣的:

<location path="my/long/route/"> 
    <system.webServer> 
     <urlCompression doDynamicCompression="false" /> 
    </system.webServer> 
</location> 

你告訴IIS關閉動態壓縮只是URL。

0

有必要分配到dynamicCompressionBeforeCache屬性的值等於false

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    … 
    <system.webServer> 
    … 
    <httpCompression …> 
     … 
    </httpCompression> 
    <urlCompression … dynamicCompressionBeforeCache="false" /> 
    … 
    </system.webServer> 
    … 
</configuration>