2012-12-11 46 views
4

我想知道如何为下一个需求设置IIS或应用程序(如果需要): - 当应用程序池在IIS中启动时,它应该调用Application_Start in Global.asax中在IIS中启动应用程序池后调用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。

+2

你的意思是这样的:http://www.iis.net/downloads/microsoft/application-initialization – paul

+0

它看起来像我需要的东西。我会看看。谢谢! – fiso

回答

8

我只是想补充@保罗说的话,并同意我从来没有得到斯科特格思里said on his blog充分发挥作用。使用:

<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也neccessary而这仅仅是矫枉过正对我来说,因为我只是当想要初始化Global.asax的Application_Start

幸运的是,阅读this post和安装Application Initialization Module和在应用程序配置,而不是使用这个值后:

<sites> 

    <site name="MySite" id="1"> 

      <application path="/" applicationPool="MyAppWorkerProcess" preloadEnabled="true" /> 

    </site> 

</sites> 

我能看到的Application_Start正在初始化过程中调用。这将我的10秒初始Web服务调用变成750毫秒初始Web服务调用。使用preloadEnabled正是我所需要的。我希望它也能帮助别人。

+1

我来到这里寻找一种方法来做到这一点与Hangfire保持运行,并最终找到[this](https://discuss.hangfire.io/t/best-way-to-ensure-that-hangfire-is -always-running/133/3)论坛帖子,odinserj很好地解释了这两种方法之间的区别。 –