[C#] CloudConfigurationManager.GetSettingがnullを返す


Answers

同じ問題があった。 接続文字列を使用する代わりに、次のようにconfiguration-> appSettings-> addキーを使用してください。

<configuration>
    <appSettings>
        <add key="StorageConnectionString" value="[ConnectionStringHere]" />
    </appSettings>
</configuration>
Question

私は次の指示に従います:

var connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");

しかし、 connectionStringnull 、ここに私のapp.configです:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <connectionStrings>
    <add name="StorageConnectionString"
         connectionString="DefaultEndpointsProtocol=https;AccountName=storage;AccountKey=key" />
  </connectionStrings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>



Azure SDKを2.2から2.3にアップグレードした後は同じです:

Azureプロジェクトを右クリックし、[プロパティ]を選択します。 アプリケーションタブで、 "Upgrade ..."をクリックしてください(rattrickの答えに感謝します)。

それから、解決するもう1つのエラーがありました。Compute EmulatorでAzureプロジェクトを実行しようとすると例外がスローされました:System.Configuration.ConfigurationErrorsExceptionが処理されませんでしたメッセージ:Microsoft.WindowsAzureで 'System.Configuration.ConfigurationErrorsException'型の未処理の例外が発生しました。 ServiceRuntime.dll追加情報:konnte nicht erstellt werden。

VS2013の「エラーリスト」ウィンドウには、次の警告があります。

同じ依存アセンブリの異なるバージョン間で競合が見つかりました。 Visual Studioで、この警告をダブルクリックするか(または選択してEnterキーを押す)、競合を修正します。 それ以外の場合は、アプリケーション構成ファイルの「ランタイム」ノードに次のバインドリダイレクトを追加します。C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets 1635

私はVSがこの警告を解決するようにして、すべて正常に動作しました。




私も同じ問題がありました。 アドバイスのどれも私のために働いたわけではありませんが、「問題」は単純でした。 1つは、このクラスの仕組みを理解することです。

あなたのapp.config / web.configやアプリケーション設定を保存する場所には入りません。 CloudConfigurationManagerServiceConfiguration.*.cscfgServiceConfiguration.csdefます。 .csdefには、設定の定義が含まれている必要がありますが、その値はConfigurationSettingsセクションには含まれていません。 設定自体は.cscfgファイルに保存されています(ただし、同じセクションの下では値を含みます;二重定義の理由は、クラウドとローカル設定の両方が同じ設定を持つことを確認するためです)。

Visual Studioで役割を右クリックし、[プロパティ] - > [設定](StorageConnectionStringの場合はストレージアカウントがクラウドサービスに接続されている場合は単に「購読」を選択する)、または手動で編集する。 あなたが設定を混乱させるならば、あなたは感嘆符のアイコンを手に入れるでしょう。

そのような単純な。




私は同じ問題を抱えていた(2回)。 Visual Studioを再起動してもAzureエミュレータを再起動しても、CloudConfigurationManager.GetSetting( "SettingName")はnullを返します。

私はそれが前に働いたと確信して、私は最新のSDKを持っていた。

ソリューションが私のPCを再起動した後、CloudConfigurationManager.GetSetting( "SettingName")は正しい値を返します。




このチュートリアルの後:

次のような設定を行うことができます:

RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")



これは私がAzure SDKをバージョン2.2にアップグレードしたときに起こったことです。

これを修正するために、packages.configをAzure ConfigurationManagerの新しいバージョンを使用するように変更しました。

<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.1.0" targetFramework="net45" />



私も同じ問題がありました。 Azure SDK 2.0を使用するようにプロジェクトを更新しました。 Webとワーカーの役割のためにNuGetパッケージを更新しましたが、Visual StudioのAzureプロジェクトはまだ古いバージョンでした。

これを修正するには、Azureプロジェクトを右クリックし、[プロパティ]を選択します。 [アプリケーション]タブの下に、Azure SDKを更新するボタンが表示されます。




古いスレッドですが、上記の方法で問題が解決されない場合は、ソリューションを共有したかったので、アプリケーションを実行するときにAzure Storage Emulatorが実行されていることを確認してください。 少なくとも私にとってこれは起こった。 私の場合は、ここで述べたように、エミュレータの問題を処理するクラスを作成しなければなりませんでした...

http://blog.simontimms.com/2013/08/28/configuration-settings-in-an-azure-worker-role/

class ConfigurationProvider
{
    private static string GetStorageConnectionString(string name)
    {
        try
        {
            return RoleEnvironment.GetConfigurationSettingValue(name);
        }
        catch (SEHException)
        {
            return System.Configuration.ConfigurationManager.ConnectionStrings[name].ConnectionString;
        }
    }

    public static string StorageConnectionString()
    {
        return GetStorageConnectionString("StorageConnectionString");
    }

    public static string DefaultConnection()
    {
        return GetStorageConnectionString("DefaultConnection");
    }
}