簡體   English   中英

IIS 8.5 - 應用程序初始化無效

[英]IIS 8.5 - Application initialization not working

我已經安裝了應用程序初始化,將網站的應用程序池啟動模式設置為“始終運行”,並在網站的高級設置中設置Preload Enabled =“True”。

但是,如果我手動回收應用程序池並等待10秒鍾,那么當我重新加載網站時,我仍然需要等待10秒才能讓網站熱身。 這表明該網站尚未啟動。

查看任務管理器,我可以看到應用程序池一直在運行 - 即使在回收之后也是如此。 但是,在我向網站提出自己的請求之前,內存使用率非常低。

我注意到的一件事是,根據以下鏈接,我的網站的高級設置中沒有“自動啟動”設置: https//blogs.msdn.microsoft.com/vijaysk/2012/10/11/iis -8-什么,新網站的設置/

如何讓我的應用程序自動啟動?

事實證明,這是一整套必須正確的設置。 您將完成所有步驟以安裝相關組件,並根據以下鏈接進行各種配置更改: http//www.iis.net/learn/get-started/whats-new-in-iis-8/iis -80的應用程序初始化

對我來說缺少的關鍵部分是Web.config中的指令,如下所示。 我得到它只是“/登錄”這是一個有效的路線,但一旦我切換到“/ [控制器] / [行動]”它工作。

此路由的優點是您可以創建自定義操作,該操作也將訪問數據庫(初始化實體框架),並執行您希望的任何其他慢速初始化。 對我來說,我只是從數據庫表中讀取一條記錄,所以我自動啟動了ASP.NET,並且還節省了預熱EF所需的幾秒鍾:)

<system.webServer>
  <applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false">
      <add initializationPage="/Login/WarmUp" />
    </applicationInitialization>
</system.webServer>

嘗試應用程序初始化設置:

我有類似的問題,並嘗試使用IIS 8.5 Windows Server 2012 R2。 在引用了許多站點之后,IIS中的所有內容都已正確設置,但卻錯過了應用程序初始化設置。 請參閱以下鏈接,“設置”部分。

在此輸入圖像描述

https://www.iis.net/configreference/system.webserver/applicationinitialization

這些文章非常好:

使用IIS應用程序初始化來保持ASP.NET應用程序的活動

IIS 8.0應用程序初始化

但是在我的情況下,安裝應用程序初始化角色時出現問題。

檢查IIS應用程序的模塊列表。 確保ApplicationInitializationModule存在。

在此輸入圖像描述

我需要卸載/重新安裝此模塊。

我不知道發生了什么,因為它似乎首先工作,然后幾周后在開發過程中它停止了。 沒有任何修補/返工修復它,我開始懷疑我從來沒有真正看到這個工作。

卸載/重新安裝應用程序初始化模塊角色時解決問題。

如果有人想知道在有多個區域初始化時要在MVC中做什么,則需要將該區域放在開頭,所有這些都在根web.config文件中。 我被困了一段時間試圖把它放在該區域的web.config中。 它還與混合應用程序完美兼容。

<add initializationPage="/NotMVC.aspx" />
<add initializationPage="/Area1/Controller/Action" />
<add initializationPage="/Area2/Controller/Action" />

有多個.config位置可以設置這些設置。

  1. 機器applicationHost.config(c:\\ windows \\ system32 \\ inetsrv \\ Config)
  2. 網站web.config(默認網站的c:\\ inetpub \\ wwwroot)
  3. 應用程序web.config

我嘗試了所有但只是成功配置3,應用程序web.config。 我的具體用例是在WCF服務上調用GET方法。

應用程序初始化的步驟也可以在其他答案中找到。 這是最有幫助的一個。 IIS 8.0應用程序初始化

  1. 安裝Windows功能應用程序初始化( Web-AppInit
  2. 設置IIS應用程序池Start mode = AlwaysRunning
  3. 設置IIS應用程序Preload Enabled = true
  4. 添加到應用程序web.config

     <system.webServer> <applicationInitialization doAppInitAfterRestart="true" skipManagedModules="true"> <add initializationPage="/Service.svc/Method/Parameter" /> </applicationInitialization> </system.webServer> 
  5. 回收應用程序池

  6. 檢查應用已初始化。

我想指出的是,初始化頁面是相對於應用程序而不是網站/域的根,所以如果我的絕對路徑是

domain.com/path1/path2/Service.svc

我不會在initializationPage參數中包含/path1/path2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM