5

次の要件のために、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は、リクエストが実行されたときにのみ呼び出されます。

4

1 に答える 1

9

@paulが言ったことを補足し、ScottGuthrieが彼のブログで言ったことを完全に機能させることができなかったことに同意したいと思います。使用:

<applicationPools>

    <add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />

</applicationPools>

リサイクル後にアプリケーションプールをプリロードします(アプリケーションプールのリサイクル時にw3wp.exeプロセスがリロードされるのを確認することで例証されます)。

しかし、私は2番目の部分を機能させることができませんでした:

<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の使用は、まさに私が必要としていたものです。他の人にも役立つことを願っています。

于 2013-11-20T21:09:38.737 に答える