4

プロジェクトを Azure Tools 1.8 (2012 年 10 月 SDK) にアップグレードしたところ、奇妙な問題が発生しました。

私のWorkerRoleでは、私の呼び出しCloudConfigurationManager.GetSettingはnullを返します(空の文字列になる可能性があり、ログファイルからはわかりにくい)。言い換えると; RoleEnvironment から設定を取得できません。

情報:

  • エミュレーター/ローカルホストは完璧に動作します
  • RDP 経由で検証済みの dll バージョン
  • さまざまなテスト設定を取得しようとしました
  • 現在、同じコード行が本番スロットで問題なく実行されています。
  • ナゲットの Microsoft.WindowsAzure.ConfigurationManager 1.8.0.0 を使用しています
  • app.config にも設定を追加してテストしましたが、同じ結果になりました。

手がかりはありますか?

アップデート:

コードの呼び出し (WorkerRole の Run() メソッド)

public override void Run(){

   // Fetch connectionstring
   var connectionString = CloudConfigurationManager.GetSetting("ConnectionString");

   // connectionString is null here?

  [...]

}

設定はポータルに表示されるため、確実にデプロイされます。

4

4 に答える 4

4

私はそれを修正しました、次の手順で解決しました:

  • Microsoft.WindowsAzure.Configurationバージョン 1.7.0.0を参照したプロジェクトの 1 つ。これを変更しました(ただし、出力のdllが正しいバージョンであるため、これが原因である場合は奇妙です。実行時にGACからロードされた可能性がありますか?)
  • のアセンブリ バインディング リダイレクトを削除しましたMicrosoft.WindowsAzure.Configuration
  • osFamilyを 1 から 2 にアップグレード(Windows 2008 SP2 -> Windows 2008 R2)

いくつかの手順はおそらく不要ですが、どれがどれかわかりません:-)

于 2013-02-20T10:49:31.587 に答える
1

これは、Azure SDK を 2.0 から 2.2 にアップグレードした後に取得しました。次の方法で修正できました。

  1. Azure プロジェクトを右クリックし、[プロパティ] を選択します。[アプリケーション] タブに従って Azure SDK を更新します。rattrick1 の回答に感謝します。
  2. 右クリックして NuGet パッケージを管理します。左側で [更新] をクリックし、WindowsAzure.ConfigurationManager を更新します。
于 2013-12-21T09:24:16.250 に答える
1

代わりに RoleEnvironment.GetConfigurationSettingValue("ConnectionString") を使用するのはどうですか。サービス構成ファイル (cscfg) から値を取得しようとしていると仮定しますか?

于 2013-02-18T00:49:35.283 に答える