私の経験が記述されたシナリオとまったく同じかどうかはわかりませんが、少なくともインスピレーションがあると思います。
私のソリューションでは、4つの異なるクラウドサービスがあり、それぞれにはウェブの役割があり、他のサービスのURLを知っている必要があります。 プロダクションでは、すべてのサービスのURLを正確に把握しており、ドメイン名で各サービスを参照できます。 しかし、クラウドサービスを特定のIPアドレス(およびポート)にバインドするオプションがなく、特定のクラウドサービスが2つの異なるデバッグ間で同じアドレスを維持することをDevFabricが保証できないため、デバッグを行うのは悪夢です。セッション。
私は簡単な技術で問題解決している:私のWebRolesで
を私はdebug.myservice.comまたはdebug.myotherservice.comのようなドメイン名を常に参照してください。例えば、のようないくつかの簡単な文を追加し
windows/system32/drivers/etc/hosts
によって:
ローカルIPアドレスは、あなたが見つけることができるホストファイルを使用して解決される
127.0.0.1 debug.myservice.com
127.0.0.2 debug.myotherservice.com
この問題を解決するが、新しいデバッグセッションを起動するたびにホストファイルを手動で更新する必要があるため、非常に退屈な作業になる可能性があります。
しかし、シンプルで強力なソリューションがあります。 あなたはセットアップクラウドサービスが初期化されるたびに実行され、簡単なスタートアップスクリプトをすることができます知っている、あなたはここで詳細を見つけることができます。
http://msdn.microsoft.com/en-us/library/windowsazure/hh180155.aspx
あなたはクラウド上で実行されているときにも、あなたが別のスクリプトを実行することができますかエミュレータで
私が行うことは、クラウドサービスがエミュレータ(およびエミュレータのみ)環境で初期化されるたびにホストファイルを自動的に更新するスクリプトを実行することです。
ここではスクリプト:あなたがスタートアップでスクリプトを実行するために、ServiceDefinition.csdefに追加するために必要なもの
IF "%ComputeEmulatorRunning%" == "true" (
cd Startup
UpdateDnsHostsOnDebugEnv.exe MyCompany.MyService.Site.WebRole debug.myservice.com
cd..
)
、ここで:
<Startup>
<Task commandLine="Startup\UpdateDnsHosts.cmd" executionContext="elevated" taskType="foreground">
<Environment>
<Variable name="ComputeEmulatorRunning">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
</Task>
</Startup>
お知らせの使用UpdateDnsHostsOnDebugEnv.exeプログラム。これは単純なコンソールアプリケーションです。単にcsrun.exeを実行して結果を解析して、ロールのローカルエンドポイントアドレスを抽出し、ホストファイルを更新するだけです。
このヘルプが必要です。
私自身の質問に対する部分的な答え:はい、 "_web"のようなものに私のMVC Webプロジェクト(ロールの名前も変更)の名前を変更すると、リストの先頭に移動してバインドされる一貫して127.255.0.0になりました。しかし、これを行うより良い方法があれば私はまだ興味がありますが、これはハックのように感じます。 – JcFx