2

私は現在 RoleEnvironment.GetConfigurationSettingValue(propertyName)、WebRole構成ファイル(csdef + cscfg)で定義された設定の値を取得するために使用しています。わかりました、正しく聞こえます。

これは、設定が存在する場合はうまく機能しますが、設定がcsdefおよびcscfgで定義されていない場合は、例外で失敗します。

web.configに多くの構成設定があるAzureに既存のアプリを移行しています。私のコードでは、設定値を読み取るために、テストしたいと思います。webRoleconfig(csdef + cscfg)に存在する場合は、ここから読み取ります。それ以外の場合は、web.configからConfigurationManagerを使用して読み取ります。これにより、web.configからすべての設定を移行できなくなり、アプリが既にデプロイされている場合はカスタム設定が可能になります。

これを行う方法はありますか?

これは本当に醜い方法であるため(そしてほとんどの場合、パフォーマンス効果が高くないため)、try / catchにカプセル化する(およびcatchを入力する場合はweb.configから読み取る)ことはしたくありませんGetConfigurationSettingValue

ありがとう !

4

1 に答える 1

3

1.7AzureSDKの更新。CloudConfigurationManagerクラスが導入されました。を使用すると、単一のGetSetting呼び出しで最初にcscfgを調べてから、キーが見つからない場合はweb.configにフォールバックできます。

http://msdn.microsoft.com/en-us/LIBRARY/jj157248

1.7以前のSDK単純な答えはノーです。(私が知っていること)

さらに興味深いトピックは、構成を依存関係と見なすことです。バッキングの実装を時間の経過とともに変更できるように、構成設定を依存関係として扱うことが有益であることがわかりました。その実装は、テスト用の偽物か、 .config/ .cscfgからマルチテナントソリューション用のデータベース実装への切り替えなどのより複雑なものである可能性があります。

この構成ラッパーを指定すると、構成オプションのソースが何であれ、そのTryGetSettingを内部メソッドとして記述できます。この機能がRoleEnvironmentメンバーに追加されると、その内部実装を変更するだけで済みます。

于 2011-05-16T14:41:38.890 に答える