1

1 つの MVC4 Web ロールと 2 つのバックエンド Web ロールで構成された Azure ソリューションがあります。内部 http エンドポイントを使用して、IISExpress でこれをテストしてきました。これはうまくいきます。tcp エンドポイントをテストしたいと思います。これらはおそらく Azure ライブで使用するものなので、完全な IIS を使用するように展開オプションを変更しました。私が理解しているように、IISExpress は tcp バインディングをサポートしていないからです。私はまだエンドポイントに変更を加えていません。また、デプロイに関するその他の変更も行っていません。これにより、ロール環境の初期化に失敗し、「ロール検出データを利用できません」というエラーが発生します。出力ウィンドウにこれがあります:

\Microsoft.Data.Services.Client\v4.0_4.99.2.0__31bf3856ad364e3 
\Microsoft.Data.Services.Client.dll', Skipped loading symbols. Module is optimized and the   
debugger option 'Just My Code' is enabled.
'w3wp.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC_32\msshrtmi  
\1.7.0.0__31bf3856ad364e35\msshrtmi.dll'
Microsoft.WindowsAzure.ServiceRuntime Information: 100 : Role environment . INITIALIZING
Microsoft.WindowsAzure.ServiceRuntime Information: 100 : Role environment . INITIALED RETURNED.  
HResult=-2147467259
Microsoft.WindowsAzure.ServiceRuntime Error: 102 : Role environment . FAILED TO INITIALIZE
A first chance exception of type 'System.InvalidOperationException' occurred in    
Microsoft.WindowsAzure.ServiceRuntime.dll

IIS の下のサイトとコンピューティング エミュレーターの両方で、すべてのインスタンスが表示されます。MVC4 Web ロールの場合は次のようになり、WCF サービスの場合も同様です。

[fabric] Role Instance: deployment17(123).Azure.Web.Test.0
[fabric] Role state Unhealthy
[Diagnostics]: UpdateState(Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorStartupInfo,    
Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorConfiguration, )
[Diagnostics]: Acquired mutex
[Diagnostics] Information: C:\Users\User\AppData\Local\dftmp\Resources\5911e3b3-15ce-4b36-ab50-
f04dda461e60\directory\DiagnosticStore\Monitor
[Diagnostics] Information: D:\Work\CLIENTS\Test\Solutions\Test\Azure\csx\Debug\roles\Web.Test
\diagnostics\x64\monitor\MonAgentHost.exe -LocalPath "C:\Users\User\AppData\Local\dftmp\Resources
\5911e3b3-15ce-4b36-ab50-f04dda461e60\directory\DiagnosticStore\Monitor" -StaticConfigFile 
"C:\Users\User\AppData\Local\dftmp\Resources\5911e3b3-15ce-4b36-ab50-f04dda461e60\directory
\DiagnosticStore\Monitor\Configuration\mastaticconfig.xml" -ConfigFile "C:\Users\User\AppData
\Local\dftmp\Resources\5911e3b3-15ce-4b36-ab50-f04dda461e60\directory\DiagnosticStore\Monitor
\Configuration\maconfig.xml" -ShutDownEvent WADDM-ShutDown-38fb5936e7b14b058ae4a7c0b516945d 
-InitializedEvent WADM-StartUp-38fb5936e7b14b058ae4a7c0b516945d -parent 15308 -events
[Diagnostics]: Creating config channel server
[MonAgentHost] Output: Agent will exit when WADDM-ShutDown-38fb5936e7b14b058ae4a7c0b516945d is 
signaled.
[MonAgentHost] Output: Will signal WADM-StartUp-38fb5936e7b14b058ae4a7c0b516945d after the agent 
is initialized.
[MonAgentHost] Output: Registered as an event consumer.
[MonAgentHost] Output: Agent will exit when parent process 15308 exits.
[MonAgentHost] Output: Monitoring Agent Started
[Diagnostics]: Starting configuration channel polling
[fabric] Role state Started
[runtime] Role entrypoint . CALLING   OnStart()
[runtime] Role entrypoint . COMPLETED OnStart()
[runtime] Role entrypoint . CALLING   Run()

これの原因は何ですか?IIS を完全に機能させるための追加の構成手順はありますか?

私の環境に関する詳細:

勝つ 7 x64 | IIS 7.5 | Azure SDK の最新リリース

4

1 に答える 1

1

問題を理解するために、HTTP/80 および Internal-HTTP (port-auto) エンドポイントを持つ MVC4 Web ロールと、内部 TCP エンドポイントを持つ 2 つの Worker ロールを作成しました。各ワーカー ロールで次のように設定します。

var endpoints = RoleEnvironment.Roles["WorkerRole1"].Instances.Select(i => i.InstanceEndpoints["EndPoint11"]).ToArray();

var endpoints = RoleEnvironment.Roles["WorkerRole2"].Instances.Select(i => i.InstanceEndpoints["EndPoint12"]).ToArray();

MVC4 HomeController では次のようになります。

var endpoints = RoleEnvironment.Roles["MVCWebRole1"].Instances.Select(i => i.InstanceEndpoints["HttpInternal"]).ToArray();

このシナリオは、IISExpress と IIS7.5 の両方で問題なく実行できました。

問題を示す helloworld VS2010 ソリューション (完全な構成を含む) を作成し、ここで共有していただければ、確認して修正を見つけることができます。

于 2012-07-20T00:31:47.250 に答える