2016-05-08 232 views
4

重新啓動IIS網站,我正在尋找一種方法來從一個MVC控制器重新開始(從管理頁面) 當前運行的網站,用C#.NET從MVC控制器

爲什麼我需要它? 我有一個網站的錯誤,但它只發生在網站運行一個隨機的時間,這使得它真的很難找到, 同時我仍然需要一個遠程的方式來從我的手機快速重新啓動,如果需要的網站。

+0

你一定要明白,如果它是在相同的應用程序託管了這會重新啓動一切,包括管理頁面? –

+0

你嘗試過什麼嗎? – yaakov

+0

是的,但我需要一些東西 – CMS

回答

2

ASP.NET應用程序可能會重新啓動,因爲真正有很多原因。它可能比你想象的更頻繁地發生。 ASP.NET web應用程序 將因以下原因重新啓動:

  • Web.Config文件中的更改。更改任何參數,添加空格字符,甚至更改文件的修改日期都將導致重新啓動應用程序。
  • 更改machine.config,就像web.config一樣。
  • 更改/ bin文件夾。如果您添加,更新或刪除/ bin文件夾中的任何文件,應用程序將重新啓動。
  • 更改App_Code文件夾。在App_Code中添加,刪除或編輯類將導致應用程序重新啓動。
  • 更改Global.asax文件,就像在web.config中一樣。
  • 變化App_LocalResources文件夾
  • 變化App_GlobalResources文件夾
  • 變化App_WebReferences夾
  • 變化資料配置
  • 達成彙編限制,在machine.config文件與numRecompilesBeforeAppRestart定義。默認值是15. ASP.NET監視文件中的任何更改。當某些數字(默認爲15)被更改時,Web應用程序會自動重新啓動 。這是爲了節省服務器上的內存。在 動態生成文件的一些網站,這可能會導致 頻繁重新啓動。
  • 防病毒軟件更改文件的修改日期。防病毒程序掃描文件,如Web.config或Global.asax。某些防病毒程序 更改這些文件的修改日期,並導致頻繁重新啓動 ,這會降低網站性能。
  • IIS重新啓動,所有網站也將重新啓動。
  • 更改物理路徑到網絡應用程序
  • 由於不活動而導致IIS回收的網站(默認20分鐘)。如果網站沒有訪問者,IIS將從內存中卸載它以節省 資源。當下一位訪問者 到來時,申請將再次開始。

這是我通常會重新啓動應用程序。

  1. 從代碼中調用UnloadAppDomain,儘管需要完全信任權限才能這樣做。

    System.Web.HttpRuntime.UnloadAppDomain()

  2. 刻意改變gloabl.asax或web.config文件的修改日期屬性

    File.SetLastWriteTimeUtc(MapPath("~/global.asax"), DateTime.UtcNow); File.SetLastWriteTimeUtc(MapPath("~/web.config"), DateTime.UtcNow);

3

創建一個.bat文件名IISresart.bat

,並在這裏面我寫

iisreset 

IISRESET停止,然後啓動IIS。

而且ASP.net我寫

它重新啓動IIS。

注意:我在asp.net web窗體上測試過它,我也應該使用MVC。 而對於沒有窗口添加此行processInfo.CreateNoWindow = true;

+0

謝謝我嘗試它,但我也會嘗試在評論中的其他選項可能會對我更好, – CMS

+0

讓我們知道它適用於asp.net MVC @CMS –

+0

yup會做!謝謝 – CMS

3

當我想從應用程序中註銷所有用戶時,我使用的一個非常簡單的解決方案是通過從bin文件夾內創建/刪除(如果存在)一個虛擬.dll文件。

你能說出任何你想要的這個dll文件,但通過創建/刪除將重新啓動整個應用程序(池),並解決您的問題..

這個解決方案的好處是,你不需要您的Web應用程序的特殊權限。

+1

我喜歡那樣!這就是所謂的思維開箱 – CMS

+0

這dummy.dll應該是什麼?我可以把一個空白文件結尾.dll嗎? – CMS

+0

剛剛創建任何文件(文本文件)與.dll擴展名可以說dum.dll ... 如果dum.dll存在然後刪除它... :) –