2012-02-08 2 views
1

WebRoleは複数のサイトをホストしています。各サイトのスタートアップタスクをサイト固有のアクションを使って行いました。問題は、最初のサイト(セクションに記載されている最初のサイト)の起動タスクだけが展開中に実行できることです。Azure:webroleで各サイトエントリのスタートアップタスクを実行するには?

このように見えるのは、WebRoleインスタンスの[ドライブ]:\ approotフォルダに最初のサイト(またはWeb-role defifnitionのサイト)のみがコピーされるためです。他のすべてのサイトは[ドライブ]:\ sites \にコピーされます(初期の場所は将来の変更の対象となる可能性があるため別の場所です)。

[ドライブ]:\ sites \に各サイトのバッチファイルを実行する簡単な方法はありますか?

RoleEnvironmentオブジェクトまたはxPath値(ここではhttp://msdn.microsoft.com/en-us/library/windowsazure/hh404006.aspxなど)を使用して、追加のサイトが配置される正確なパスを提供するトリックはありますか?我々は2つのオプションを持っている

ATM、両方が芋、ハックと不安定です:IISの設定から 1.Readデータと明示的に指定するスクリプト用/メインスタートアップタスク入力として 2.Scan /サイトを、それを使用して見つかった場合は、それを実行します。

答えて

1

Startup Taskは、役割のためのものであり、サイトのためのものではありません。 RoleEntryPoint子孫を使用して方法を見つけ、OnStartメソッドを使用してサイトごとに手動でスタートアップタスクを実行する必要があります。

サイトディレクトリを調べるには、this questionをチェックしてください。答えは完全にタスクをカバーしています。私はそれを使用します、それは生産のために100%信頼性があります。

+0

信頼できる... RoleModel.xmlが移動されるまで、XML名前空間または構造が変更されます。とにかく、IISの実際の設定を読むよりも簡単で、汚れも少なくなります。ヒント –

+0

RoleModel.XMLと構造体はSDKバージョンにバインドされています。したがって、唯一の問題は、新しいSDKが来たときにプロジェクトをアップグレードし、この新しいSDKがこのファイルに**変更**の変更を加えた場合です。しかし、これは簡単に維持でき捕獲可能です。 – astaykov

関連する問題