it-swarm.com.de

Lesen eines Schlüssels aus der Web.Config mit ConfigurationManager

Ich versuche, die Schlüssel aus der Datei Web.config in einer anderen Ebene als der Webebene zu lesen (gleiche Lösung)

Folgendes versuche ich:

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

Und hier ist mein appSettings in der Web.config Datei:

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

Wenn ich den Code debugge, sind username und password nur null, sodass der Wert der Schlüssel nicht abgerufen wird.

Was mache ich falsch, um diese Werte zu lesen?

268
twal

Verwenden Sie stattdessen die WebConfigurationManager-Klasse. Zum Beispiel:

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

Ich fand diese Lösung sehr hilfreich . Es verwendet C # 4.0 DynamicObject, um den ConfigurationManager zu umbrechen. Anstatt auf Werte wie diesen zuzugreifen:

 WebConfigurationManager.AppSettings["PFUserName"]

sie greifen als Eigentum darauf zu:

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

EDIT: Hinzufügen eines Code-Snippets für den Fall, dass der Link veraltet ist:

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

Wenn der Aufrufer ein anderes Projekt ist, sollten Sie die Konfiguration in das aufrufende Projekt schreiben, nicht in das aufgerufene.

6
Saber

Es gibt zwei Web.config-Dateien. Ich denke, Sie haben möglicherweise mit diesen beiden Dateien verwechselt.

Überprüfen Sie dieses Bild:

click this link and check this image

In diesem Bild sehen Sie zwei Web.config-Dateien. Sie sollten Ihre Konstanten zu denen hinzufügen, die sich im Projektordner und nicht im Ansichtsordner befinden

Hoffe das kann dir helfen

2
raja gangadhar

Vollständiger Pfad dafür ist

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

Sie können in dieser Zeile auch versuchen, einen Zeichenfolgenwert aus der Datei app.config abzurufen.

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

Dieses Problem tritt auf, wenn dieses Projekt von einem anderen Projekt verwendet wird. Stellen Sie sicher, dass Sie die App-Einstellungsschlüssel in die app.config oder web.config des übergeordneten Projekts kopieren.

1