クレーム ベース認証用の WIF STS を実行する 2 番目の Web ロールを使用する ASP.NET MVC ソリューションでも、同様の課題がありました。ローカル エミュレーターで実行する場合、MVC アプリケーションの web.config は、STS の非ロード バランサー IP アドレスを認識する必要がありました。
さらに、エミュレーターによって割り当てられた内部 IP アドレス (127.255.0.X) のみを参照する URL ルートを構築するカスタム コードがあります。これらのルートは、ロード バランサーを介して戻されるときに問題を引き起こす可能性があります。また、IIS の既定の Web サイトをシャットダウンして、エミュレーターによるポートの再マッピングを保証します。
Azure 1.8 SDK では、アプリケーションがコマンド ラインから開始され、開発ファブリック内の他のすべてのデプロイが削除されたときに、ローカル エミュレーターが一貫して 127.255.0.X アドレスを割り当てることを確認しました。
ソリューションが VS2010 内にパッケージ化されたら、コマンド ラインから Web ロールを起動する PowerShell スクリプトを作成しました。ローカル エミュレーターのパッケージ化に使用する AzureLocal というビルド構成と Web 変換があります。
Import-Module WebAdministration
Stop-WebSite 'Default Web Site'
$env:WindowsAzureEmulatorInstallPath = (Get-ItemProperty -Path "Registry::HKLM\Software\Microsoft\Windows Azure Emulator" -Name InstallPath).InstallPath
$env:ServiceHostingSDKInstallPath = $env:WindowsAzureEmulatorInstallPath + '.NET SDK\2012-10'
$env:Path = $env:WindowsAzureEmulatorInstallPath + 'emulator;' + $env:WindowsAzureEmulatorInstallPath + 'devstore;' + $env:ServiceHostingSDKInstallPath + 'bin;' + $env:Path
csrun /devfabric:start
csrun /devstore:start
csrun /removeAll
csrun /devfabric:clean
csrun Application\Foobar.Extensions.Azure\csx\AzureLocal Application\Foobar.Extensions.Azure\bin\AzureLocal\app.publish\ServiceConfiguration.Local.cscfg
Write-Host "Application Pools to Attach for Debugging"
get-item IIS:\AppPools\*
$ie = New-Object -ComObject InternetExplorer.Application
$ie.Navigate("https://127.255.0.1:444")
$ie.Visible = $true
あなたのアプリケーションは、STS と MVC の組み合わせよりも可動部分が多いように思えますが、Visual Studio の外部で起動をスクリプト化できれば、予測可能なアドレス割り当てを得ることができます。