2009-11-19 156 views

回答

3

聽起來像你希望創建的映射在你的應用週期對象一次。這聽起來像是你試圖阻止每次請求反覆創建。 (請說明是否我錯了。)

請看IHttpModule上的方法。假設你正在使用IIS 7.0, the ASP.Net lifecycle將顯示Init()方法被觸發一次。意思是,它在每個應用程序生命週期中被觸發一次因此,啓動Web服務器,第一個請求將啓動Init(),隨後的請求不需要觸發它,直到刷新Web服務器應用程序週期。

您應該能夠安全地將您的映射創建代碼移動到Init()方法中,該方法應該爲您提供使用多線程單例初始化類型尋求的保護措施。你應該仍然在你的映射對象周圍有多線程保護措施,但是IHttpModule的Init()方法應該爲你提供你正在尋找的fire-once-done完成效果。

+0

是的,第一段是我想要完成的。我正在使用IIS 6.0,Init仍然有相同的行爲? – blu 2009-11-19 23:14:58

+0

這似乎在IIS 6.0中表現相同,Init只被調用一次。 – blu 2009-11-19 23:31:37

+0

我相信IIS6表現出同樣的行爲,是的。 – jro 2009-11-19 23:59:47