3

いくつかの異なるアプリケーション (MVC、http ベースの WCF、TCP ベースの WCF、ADFS、およびいくつかの一般的なワーカー ロール) を含むかなり複雑なシステムを開発しており、それらはすべて Azure にデプロイされています。ローカル デバッグの場合、これらをローカルの Dev ファブリックと IIS で実行する必要があります。必要なことはほぼすべて完了しており、すべて機能していますが、1 つのことを除いて、Dev Fabric でさまざまなものがバインドされる IP アドレスを予測できません。127.0.0.1 の場合もあれば、127.0.0.3 の場合もあれば、127.0.0.4 の場合もあります (その他の場合もありますか?)。構成ファイルの変換と ADFS 証明書利用者信頼については、これらの IP がどのようなものになるかを事前に知る必要があります。

Web サイト専用のこれらの IP アドレスを管理/制御 (または少なくとも予測) するにはどうすればよいですか? (WCF はすべて問題ありません) 実際に、適切な IP を参照してすべてを開発ファブリックに展開できれば、すべてが機能します! ただし、これを行うのは非常に面倒であり、必要なたびに web.config および app.config 変換ファイルにいくつかの調整が必要になるため (変更のたびに ADFS サーバーを再構成することは言うまでもありません)、これは持続可能な状況ではありません。なんとしてでも!

4

1 に答える 1

1

クレーム ベース認証用の 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 の外部で起動をスクリプト化できれば、予測可能なアドレス割り当てを得ることができます。

于 2013-02-26T05:02:48.480 に答える