2012-03-23 5 views
0

私は、私のワーカーロールとウェブロールスタートアップコードの両方で使用するいくつかのコードを持っています。 Workerでは、コードはRun()メソッドから呼び出されます。 Web役割では、Application_Startで呼び出されます。Azure WebまたはWorkerの役割を決定しますか? (代替:IISで実行されているかどうかを確認してください)

私は従業員かウェブのどちらの役割をしているかによって動作を少し変更したいと思います。これを検出する方法はありますか?そうでない場合は、IISで実行しているかどうかを検出できますか?

私がApplication_Startで実行しているので、HttpContextのチェックは機能しません。

+0

ウェブとワーカーの両方の状況でRun()メソッドを使用しているだけではない理由はありますか? Webロールは、IISを有効にしたワーカーロールです。ファブリックは引き続きWebロール上のすべてのRoleEntryPoint(Azureロールライフサイクル)メソッドを呼び出します。 –

+0

@ ChrisJ.T.Auld Run()は、フルIIS Webロール上の同じAppDomainで実行されません。 –

+0

[Azureのロールタイプ(ワーカーまたはウェブ)を見つけることはできますか?](http://stackoverflow.com/questions/8877461/can-i-find-azure-role-type-worker-or-web) –

答えて

1

まあ、

この質問は何度も何度been asked overとしています。私が考えていることは、listing all sites in current role instance(ServerManagerアプローチ)のアプローチを使用していることです。 ServerManagerへの呼び出しに失敗した場合、またはサイトがまったくない場合は、ワーカー・ロールになります。そうでなければ - ウェブの役割。私はこれが最も信頼できる方法であると思う。

IISがワーカーロールにまだ存在することを忘れないでください(任意のワーカーロールにRDPでき、IISサーバーロールが存在することがわかります)。それはちょうど開始されていません!だから、 "デフォルトのWebサイト"がまだそこにあるかもしれません。

+3

"何度も何度も何度も繰り返していますが、答えることなく一つの質問にリンクしています。落ち着いて質問者が自分の問題を解決するのを助けます。 – artfulhacker

0

"WaWorkerHost"プロセスが存在する場合はワーカーロール、それ以外の場合はWebロールです。代わりに「WaIISHost」を確認することもできます。

bool isWorkerRole = false; 
    foreach (Process proc in Process.GetProcessesByName("WaWorkerHost")) 
    { 
     isWorkerRole = true; 
    }   
関連する問題