2017-03-28 83 views
0

我們有一個ASP.Net應用程序被許多客戶安裝在他們自己的服務器上使用。因爲它安裝在它們的末端,每個都有不同的數據庫和URL綁定等,所以我創建了一個控制檯應用程序,它獲取一個zip文件並將其提取到c:\ inetpub位置以追加最新的應用程序更改。此控制檯應用程序已添加到計劃任務中以創建自動更新。從控制檯應用程序自動重啓IIS網站

顯然,當任何人第一次訪問網站後,他們不得不等待一段時間,而網站重建。我更改了控制檯應用程序以包含一個Process.Start(urlofapp),以便它可以作爲更新的一部分,因此第二天早上第一個用戶不必等待重建。

我測試了它可以運行自己,但還沒有發佈,因爲我擔心這個URL過程保持打開狀態。任何人都可以啓發我這是否是這種情況,因爲我不希望發生這種情況,或者可以給我任何有關如何手動重建網站作爲控制檯應用程序的一部分的想法。

+2

爲什麼不用一個簡單的WebRequest替換Process.Start()? – Filburt

+3

爲什麼使用Process.Start?有很多方法可以在不實際啓動瀏覽器的情況下以編程方式向網站發出HTTP請求。 – mason

+0

是的好點,我清楚地認爲瀏覽器之前,簡單的URL。會先嚐試。 – user1166905

回答

0

IIS已經有了一段時間的自動啓動應用程序功能。你只需要啓用它。您可以從the Guthe IIS site中找到更多信息。

+0

您應該在答案中包含相關說明,而不是依賴外部鏈接。 – mason

+0

我假設你的意思是應用程序初始化。我嘗試了這一點,雖然它包含在IIS8 +中,但IIS7.5沒有它,並且在許多服務器上安裝擴展時遇到問題 – user1166905

-2

更安全的是使用啓動頁面來加載服務器上的所有內容。如果你在一個異步方法中執行這個邏輯,而這個方法又是從一個MVC控制器調用的,那麼這個邏輯可能在主頁面結束時運行。或者,使用線程化任務並顯示僅在安裝發生時返回的起始頁。

+1

這不是IIS的工作原理。 MVC控制器將成爲更新的DLL的一部分 - 與IIS檢測到的DLL完全相同,因此它將在任何起始頁面之前將所有內容都拋出,更不用說控制器將運行 – MickyD

+0

,這就是爲什麼我說它是線程而不是讓它鎖定請求。 –

+0

您是否打算在原始的asp.net應用程序上執行此操作? – user1166905

相關問題