2013-03-18 231 views
0

我想調試我在IIS 7.5上運行的asp.net web應用程序時遇到的問題。我期望在通過將物理路徑更改爲新的代碼副本來部署應用程序時發現,請求未完成。ASP.NET應用程序生命週期 - 非頁面生命週期

我的印象是,當新的請求針對新實例執行時,當前正在執行的請求將在應用程序的舊實例上完成。如果這是真的,我預計舊的實例運行,直到達到httpRuntime.shutdownTimeout。

長話短說,我試圖在本地重現這一點,但沒有發生。無論我提出了多長時間的請求,IIS似乎都會等待超出shutdownTimeout中的設置。

這是我感興趣的生命週期的一部分。在應用程序的物理路徑更改和IIS將任何當前正在執行的請求上的插件拉上之間會發生什麼?

+0

讓Visual Studio爲您部署代碼。我不知道爲什麼你認爲POSTS/GETS(請求)會跨實例共享。我會在應用程序中尋找任何硬編碼的路徑,如果Visual Studio在路徑下放置一個扭曲的路徑,這是值得研究的。如果我理解正確,我不認爲app_start,app_end與您的問題有任何關係。事實上,你甚至不得不使用這些。 – RandomUs1r 2013-03-18 22:44:45

+0

可能的重複[任何人都可以解釋如何ASP> NET應用程序li​​fecyle工作從第一個請求開始到IIS到頁面響應](http://stackoverflow.com/questions/11581619/anyone-can-explain-how-aspnet-應用程序生命週期 - 作品 - 開始 - 從 - - 第一-R) – 2013-03-18 23:23:00

回答

0

MSDN有詳細的ASP.NET應用程序生命週期解釋。

Application_Start和Application_End方法是不代表HttpApplication事件的特殊方法。 ASP.NET在應用程序域的生命週期中調用它們一次,而不是爲每個HttpApplication實例調用它們。

的Application_Start

請求所述第一資源(例如,頁)在ASP.NET應用程序時調用。 Application_Start方法在應用程序的生命週期中只調用一次。您可以使用此方法執行啓動任務,例如將數據加載到緩存中並初始化靜態值。 您應該在應用程序啓動過程中僅設置靜態數據。不要設置任何實例數據,因爲它只能用於創建的HttpApplication類的第一個實例。