2009-08-28 60 views
1

我有和HTTP模塊根據其內容類型標題清理,壓縮和縮小CSS,JS和HTML文件。它在我的臨時環境和本地主機(ISS7,傳統的管道模式)中運行良好。在IIS 6(製作)上,它不可靠。偶爾,這個靜態文件停止被asp.net處理,並且似乎恢復到默認的IIS處理程序。如果我觸摸web.config或執行IISRESET,它會在一段時間後再次正常工作。即使模塊進入這種「古怪的狀態」,.aspx文件仍然按預期運行通過模塊。所以,我相當肯定這個模塊不是問題,我們正在看的是一個IIS問題。靜態文件的HTTPModule有時無法在IIS上運行6

  1. 我有HTML,JS和CSS文件映射在IIS 6中由aspnet_isapi.dll處理所有動詞。
  2. 在我的web.config中,我已經設置了這些靜態文件,由處理程序部分的System.Web.StaticFileHandler處理所有動詞。
  3. HTTP模塊也在web.config中連接。

任何想法?我想避免將生產Web服務器暫時升級到IIS 7!

回答

0

開發和生產之間的巨大差異是交通量。

卷可以突出顯示低流量開發測試中未遇到的併發問題。

你確定你的代碼是免費的線程問題等

+0

我希望我有一個數量問題!不幸的是,我的流量非常稀少。但我肯定會調查這一點。 – smercer

1

我會相當高自信地說,問題出在你的HTTP模塊。也許這個問題可能是一個線程問題。 HttpModule僅針對所有請求實例化一次,因此如果將數據存儲在類中的成員變量中,則會遇到問題,因爲多個線程將同時訪問相同的數據。

順便說一句,我想我會建議你的問題的替代解決方案。創建一個構建腳本,使用例如MSBuild,並讓構建腳本壓縮文件。

+0

我曾經考慮過將它作爲構建過程的一部分,但該模塊還處理在運行時生成的axd和asmx腳本代理。這些非靜態示例的有趣之處在於它們始終都能正常工作。這只是偶爾無法由模塊處理的靜態文件。我確實有兩個成員變量,我可以更改爲常量(它們是StringCollections,它們被填充到模塊的構造函數中)。我對多線程應用程序沒有太多經驗,可能會有人懷疑嗎? – smercer

+0

@smercer - 如果模塊中的唯一變量是構造函數中填充的兩個變量,那麼這些不應該是責任。但是,也許向這些靜態文件中的一個同時發出很多請求可以幫助指出它是否是多線程問題。但是多線程問題最糟糕的部分是,他們你永遠無法確定你沒有,因爲你不能重新創建.f – Pete

相關問題