1

これは私の最初の azure プロジェクトであり、何か間違っているかどうかはわかりません。MVC 3 webrole内でいくつかの構成を取得しようとしています。このために使用しています:

RoleEnvironment.GetConfigurationSettingValue(KeyName)

エミュレーターでアプリケーションを実行すると、エラーが発生します。

BC30451: 'RoleEnvironment' is not declared. It may be inaccessible due to its protection level.

次のように完全な名前空間を追加しようとしました:

Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(KeyName)

そして、私はこのエラーを受け取ります:

BC30456: 'ServiceRuntime' is not a member of 'WindowsAzure'.

ただし、WebRole クラスの「OnStart」イベント内で RoleEnvironment にアクセスできます。それで、それは期待される動作ですか?はいの場合、プロジェクト全体で構成を読み取るにはどうすればよいですか?

前もって感謝します;

4

3 に答える 3

1

私はseanostの提案に基づいて新しいソリューションを開始しましたが、それはうまく機能したので、問題はVSではないと考えました。何度か試した後、ようやく解決策を見つけましたが、説明がありません:-)

私のMVCプロジェクトの下に、「App_Code」というフォルダーがあります。私はWebフォーム開発から来たので、名前に慣れているので、いくつかのクラスを保持するためにこのフォルダーを作成しました。このフォルダ内のクラスから「RoleEnviroment」にアクセスしようとすると、プロジェクトはコンパイルされますが、何にアクセスしようとしても同じエラーがスローされます。

フォルダの名前を変更したり、ファイルを別のフォルダ(たとえば「コード」)に移動したりすると、正常に機能します。前に言ったように、なぜそれが起こるのかわかりません(そしてそれは今は本当に重要ではありません:-)

于 2012-03-20T17:39:29.300 に答える
1

MVC プロジェクトに Microsoft.WindowsAzure.ServiceRuntime アセンブリへの参照を追加しましたか?

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleenvironment.aspx

于 2012-03-19T20:13:37.283 に答える
0

参考までに、Visual Studio の Azure テンプレートを使用している場合、次の名前空間への参照が既定で含まれているため、[ローカルのコピーtrue] を に設定する必要はありません。

  • Microsoft.WindowsAzure.Diagnostics
  • Microsoft.WindowsAzure.ServiceRuntime
  • Microsoft.WindowsAzure.StorageClient

Visual Studio と SDK が正しくインストールされていることを確認するには、次の操作を実行できる必要があります。新しい MVC3 Azure プロジェクトを作成usingし、Home コントローラーに ServiceRuntime ライブラリのディレクティブを追加してから、次のコードを Index アクションに追加します。

ViewBag.configValue = RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
return View();

次に、ビューに次の Razor 構文を追加します。

<p>@ViewBag.configValue;</p>

そして、ブラウザに次の結果が表示されるはずです。

UseDevelopmentStorage=true
于 2012-03-19T21:47:40.440 に答える