2016-08-01 4 views
3

私は、アプリケーションプールがオンラインになると(通常5〜10分)、ウォームアップが必要なAzureクラウドサービスを持っています。このため、私は、時間外にIIS \ Appプールリサイクルをスケジュールするのが好きです。私のリサイクルが真夜中に行われると、私はユーザーに怒鳴りつけます(そして私は叫ばれたくありません)。AzureクラウドサービスでIISリセットをスケジュールする

私がやっていることは、VMにリモーティングして、ローカルディスクにcmdファイルを追加し、 CMDファイルを実行するスケジュールされたタスクを作成します。

net stop "World Wide Web Publishing Service" 
net start "World Wide Web Publishing Service" 

私の問題は、定期的にPaaSのサービスは、「リフレッシュ」を取得、ですので、ランダムに、任意のコード\ファイルは、私は手動でVMが消えクラウドサービスに公開します。遠隔地に戻って、cmdとスケジュールされたタスクを再追加する必要があります。

クラウドサービスでは、スタートアップタスクなどを実行できます。私は私のアプリを公開するときにこのcmdファイルをパッケージ化することができるスタートアップタスクに似た何かをすることができますが、これらのコマンドを外部的にスケジュールしますか?もしそうなら..どう?

答えて

1

スタートアップタスクは、.cspkgに含まれている任意の無人アプリ/インストーラを実行することがあります。問題のファイルcmdが適切にバンドルされていることを確認する必要があります(たとえば、プロジェクトにconfigureSchedule.cmdを追加し、出力ディレクトリにコピーされていることを確認してください)。

あなたがスケジュールを設定しようとしているので、あなたは可能性が高いモードであなたcmdを実行する必要があります:

<Startup> 
    <Task commandLine="configureSchedule.cmd" executionContext="elevated" taskType="simple" > 
     <Environment> 
      <Variable name="MyVersionNumber" value="1.0.0.0" /> 
     </Environment> 
    </Task> 
</Startup> 
+0

ありがとう@DavidMakogon!私はこれを旗竿の上を走らせますが、多くのことを歓迎します – ewitkows

0

より良い解決策は、特定の時間にリサイクルするアプリケーションプールの設定を変更することです。 David Makoganのような起動スクリプトからこれを行います。

こちらをご覧ください:リサイクル時間を設定し Set default app pool recycling via command line

https://www.iis.net/configreference/system.applicationhost/applicationpools/add/recycling/periodicrestart

enter image description here

をそうでない時にリサイクルのイベントがあるでしょう、「定期的な時間間隔」をオフにしてください日。

また、WWWサービスを停止している場合は、アプリケーションプールをリサイクルするほうが簡単です。これにより、新しいアプリケーションプールが開始され、古いアプリケーションプールはユーザーからの最後の要求を処理します。だから、(ほとんど)接続損失はありません。

appcmd recycle apppool /apppool.name: Marketing 
+0

情報@ErikOppedijkをありがとう。私の問題は、定期的にVMが「リセット」され、クラウドサービスVM上のドライブに手動でファイルを追加するなどのカスタム変更が消えてしまうことです。だから現在、私は遠隔地に戻ってマシンに戻って手動で再調整する必要があります。それは私が避けようとしているものです。さらに、appcmdのヒントはありがたいですが、私のアプリケーションプール名は常にランダムに生成されるため、残念なことにその解決策の問題が発生します。 – ewitkows

+0

上記のスクリプトは、Davidが言及したように、起動スクリプトに置く必要があります。利点は、これがネイティブIIS機能であることです。 –

関連する問題