web-dev-qa-db-ja.com

ConfigurationManagerを使用してWeb.Configからキーを読み取る

Web層とは異なる層でWeb.configファイルからキーを読み込もうとしています(同じソリューション)

これが私が試みているものです:

string userName = System.Configuration.ConfigurationManager.AppSettings["PFUserName"];
string password = System.Configuration.ConfigurationManager.AppSettings["PFPassWord"];

そしてこれがWeb.configファイルの中の私のappSettingsです:

<configuration>
   ....
   <appSettings>
      <add key="PFUserName" value="myusername"/>
      <add key="PFPassWord" value="mypassword"/>
   </appSettings>
   ....
</configuration>

コードをデバッグするとき、usernamepasswordは単なるnullなので、キーの値を取得していません。

これらの値を読むために私が間違っているのは何ですか?

261
twal

代わりにWebConfigurationManagerクラスを使用してください。例えば:

string userName = WebConfigurationManager.AppSettings["PFUserName"]
435
Hector Correa
  var url = ConfigurationManager.AppSettings["ServiceProviderUrl"];
34
yogee

私はこの解決策がとても役に立つと思いました 。 ConfigurationManagerをラップするためにC#4.0 DynamicObjectを使用します。だから、このような値にアクセスする代わりに:

 WebConfigurationManager.AppSettings["PFUserName"]

あなたはプロパティとしてそれらにアクセスします。

dynamic appSettings = new AppSettingsWrapper();
Console.WriteLine(appSettings.PFUserName);  

_ edit _ :リンクが古くなった場合のためのコードスニペットの追加

public class AppSettingsWrapper : DynamicObject
{
     private NameValueCollection _items;

    public AppSettingsWrapper()
    {
        _items = ConfigurationManager.AppSettings;
    }

     public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        result = _items[binder.Name];
        return result != null;
    }
}
6
mateuscb

呼び出し側が別のプロジェクトの場合は、呼び出し側プロジェクトではなく呼び出し側プロジェクトに設定を記述する必要があります。

6
Saber

2つのWeb.configファイルがあります。私はあなたがそれら二つのファイルと混同したかもしれないと思います。

この画像を確認してください。

click this link and check this image

この画像では、2つのWeb.configファイルを見ることができます。ビューフォルダではなくプロジェクトフォルダにある定数に定数を追加する必要があります。

これがお役に立てば幸いです

2
raja gangadhar

フルパスは

System.Configuration.ConfigurationManager.AppSettings["KeyName"]
2
Siddhartha

また、この行を試してapp.configファイルから文字列値を取得することもできます。

var strName= ConfigurationManager.AppSettings["stringName"];
1
Ram Beer Singh

このプロジェクトが別のプロジェクトによって使用されている場合、この問題が発生します。アプリ設定キーを必ず親プロジェクトのapp.configまたはweb.configにコピーしてください。

1