ここにいくつか指摘することがあります。役割が開始されると、IISConfiguratorという名前が使用され、IISにプログラムで呼び出して、サービス定義で定義されているアプリケーション、vdir、アプリケーションプールなどを作成します。これは起動時に一度実行されます。
Webサイトをホストするw3wp.exeプロセスは、コードの実行に使用するRoleEntryPointとはまったく別物であることに注意してください。したがって、単にRoleEntryPoint.RequestRecycle()を呼び出すことはできず、IISが再起動することを期待することはできません。
IISを再起動する必要がある場合は、プログラムで実行することをお勧めします。ここではWindowsのAzureの上でIISを再起動するための私の3ラインのソリューションです:。
var mgr = new ServerManager();
var azurePools = mgr.ApplicationPools.Where(p => Guid.TryParse(p.Name));
azurePools.ToList().ForEach(p => p.Recycle());
私は、私が興味を持っていたものにそれらをフィルタリングするためのアプリケーションプールは、Windows AzureのでGUIDをしているという知識を使用していますが今
各インスタンスのオンデマンドで高い状態からそのコードを実行する方法が必要です。これは多くのソリューションで共通の問題です。おそらく、IISを再起動する必要があるときはいつでも、各インスタンスでファイルまたはテーブルをポーリングしてそのコードを実行させることがあります。
は、なぜあなたは最初の場所でIISを再起動したいチェックすることが唯一の「観察」W3WPに必要がある場合は? – astaykov
@astaykovコメントには長すぎるかもしれませんが、Umbraco Acceleratorを使用しており、ロールの再起動が必要な特定のアクションがあり、IISの再起動で同じことを達成できると確信しています。これに加えて、私たちは試験段階でropeyされているAzureを使用しているので、私は時々IISを再起動できるようにする必要があります。 – Digbyswift
(インスタンスベースで)iisresetなどを実行したい状況が常にあります。 –