[英]Run Application_Start immediately when application pool restarts in IIS
[英]Call to Application_Start after starting application pool in IIS
我想知道如何為下一個要求設置IIS或應用程序(如果需要): - 當應用程序池在IIS中啟動時,它應該調用Global.asax中的Application_Start
我正在使用applicationHost.config獲取以下代碼:
<applicationPools>
<add name="mySite" autoStart="true" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />
<applicationPoolDefaults>
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="false" />
</applicationPoolDefaults>
</applicationPools>
。 。
<site name="mySite" id="2" serverAutoStart="true">
<application path="/" serviceAutoStartEnabled="true" applicationPool="mySite">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\mySite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="127.0.0.1:8080:" />
</bindings>
</site>
到目前為止,僅在請求完成時才調用Application_Start。
我只想補充@paul所說的內容,並同意我無法得到Scott Guthrie 在他的博客上所說的全部功能。 使用:
<applicationPools>
<add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />
</applicationPools>
將回收后的應用程序池預加載(例如,通過回收應用程序池時看到w3wp.exe進程重新加載)。
但我從來沒有能夠讓第二部分工作:
<sites>
<site name="MySite" id="1">
<application path="/" applicationPool="MyAppWorkerProcess" serviceAutoStartEnabled="true" />
</site>
</sites>
這可能是因為當使用serviceAutoStartEnabled時使用serviceAutoStartProvider也是必要的,這對我來說太過分了,因為我只是想要初始化Global.asax的Application_Start 。
幸運的是,在閱讀本文並安裝應用程序初始化模塊並在應用程序配置中使用此值后:
<sites>
<site name="MySite" id="1">
<application path="/" applicationPool="MyAppWorkerProcess" preloadEnabled="true" />
</site>
</sites>
我能夠看到在初始化期間正在調用Application_Start 。 這將我的10秒初始Web服務調用轉換為750毫秒的初始Web服務調用。 使用preloadEnabled正是我所需要的。 我希望它也有助於其他人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.