it-swarm.com.de

ConfigurationManager.AppSettings wird null?

Ich wusste nicht, dass: "eine web.config in einer separaten Klassenbibliothek hat" und "die Web.config-App-Einstellung aus einer anderen Webanwendung las.".

Ich verwende VS2010 Target Framework 3.5

Ich weiß nicht, was hier falsch ist, aber ich bekomme null, wenn ich versuche, ConfigurationManager.AppSettings["StoreId"];

private string _storeid = GetStoreId;

public static string GetStoreId
{
    get
    {
        return ConfigurationManager.AppSettings["StoreId"];
    }
}

web.config:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>
26
Nick Kahn

Verwendet der Code, den Sie oben gepostet haben, eine separate Klassenbibliothek in Ihrer wichtigsten asp.net-Bibliothek?

Wenn Sie dieser Bibliothek eine app.config mit den oben angegebenen Einstellungen hinzugefügt haben, liest der ConfigurationManager nicht die richtige Datei, da in der Datei web.config für Ihre asp.net-Bibliothek nachgesehen wird.

29
MrEyes

Wenn Sie UNIT TEST Sie benötigen eine KOPIE des APP.CONFIG im UNIT TEST PROJEKT

30
Ben

Ich weiß, das ist alt, aber ich komme immer wieder hierher :( 

Die übliche Ursache hierfür liegt im Kontext. 

Angenommen, Sie haben eine Lösung mit einem VSTO-Add-In-Projekt und einem Klassenbibliothekprojekt. Wenn sich App.Config in der Klassenbibliothek befindet, funktioniert es nicht, da der Kontext der laufenden Anwendung das VSTO-Add-In-Projekt ist. Um Werte aus der Konfiguration zu lesen, müssen Sie die Konfigurationsdatei mit Kontext in das Projekt verschieben.

Wenn Sie nicht mit VSTO vertraut sind und so tun, als hätte ich ASP.Net project und app.config in web.config geschrieben. 

Lösung

Eine nette Lösung fügt Konfigurationsdatei-Verknüpfungen in anderen Projekten hinzu, sodass Sie nur eine Datei aktualisieren: enter image description here

Es ähnelt dem Freigeben von Assembly-Dateien gemäß Antwort # 2: https://stackoverflow.com/a/15319582/495455

12
Jeremy Thompson

und:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>

befindet sich in der web.config-Datei Ihrer ASP.NET-Anwendung und nicht in einer app.config-Datei, die Sie Ihrem Klassenbibliotheksprojekt in Visual Studio hinzugefügt haben, richtig? Sie können möglicherweise nicht null erhalten, wenn dies der Fall ist. Wenn Sie dies einem app.config Ihres Klassenbibliotheksprojekts in Visual Studio hinzugefügt haben, ist das Abrufen von null ein völlig normales Verhalten.

6
Darin Dimitrov

Disclaimer;) Dieser Beitrag soll nicht auf OP antworten, da es zu spät ist, aber es würde definitiv den Lesern helfen, die auf diese Seite gelangen.

Problem, mit dem ich konfrontiert war: ConfigurationManager.AppSettings["uName"] gibt null in meinem C # web api-Projekt zurück. 

Grundlegende Dinge, nach denen ich gesucht habe:

1) Im Code ConfigurationManager.AppSettings["uName"] verwendete ich den genauen Schlüssel 'uName' wie in web.config-Datei.

d.h. 

<appSettings>
      <add key="uName" value="myValue" />
</appSettings>

Geprüft dass ich nicht falsch eingegeben als userName anstelle von uName usw.

2) Da es sich um ein Web API -Projekt handelt, hätte es eine Datei als web.config anstelle von app.config und ebenfalls in Stammordner Ihres Projekts. [verweisen Sie auf das Bild].

 enter image description here

Lösung

Die Lösung, die für mich funktionierte,

GeändertConfigurationManager.AppSettings["uName"] in WebConfigurationManager.AppSettings["uName"] 

und

stellte sicher, dass ich hatte 

<appSettings>
          <add key="uName" value="myValue" />
</appSettings>

in der rechts Datei dh.

Die rechte Datei ist nicht web.config im Ansichtsordner

keiner das debug oder die web.config

 enter image description here

5
eRaisedToX

Ich habe gerade die Antwort DLL erhalten, die von einem anderen Projekt aus aufgerufen wird, das sich nicht im Projekt befindet, in dem create.so-Einträge in App.config vorhanden sind.

Zum Beispiel habe ich 2 Projekt in meiner Lösung, eine Klassenbibliothek und eine andere Konsolenanwendung. Ich habe Klassenbibliothek in der Konsolenanwendung hinzugefügt.So wenn ich die app.config-Datei in der Klassenbibliothek hinzufüge, projektiere sie durch null exception.it funktioniert, wenn ich die App hinzufügte .config in der Konsolenanwendung. Hoffentlich funktioniert es

2
zaheer ahmad

App-Einstellungen werden in ConfigurationManager.AppSettings geladen, Benutzereinstellungen (unter Eigenschaften in den Projekteigenschaften) jedoch nicht. 

1
Markus

Ich stimme der obigen Antwort zu und möchte noch ein paar Punkte hinzufügen

  1. sie sollten sicherstellen, dass Sie vor und nach dem folgenden Befehl kein Leerzeichen einfügen: siehe folgenden Code:

    private static string Client_ID = ConfigurationManager.AppSettings["ida:ClientId"];
    

    wenn Sie zwischen ida: ClientId ein Leerzeichen einfügen, funktioniert es nicht und gibt null zurück

  2. stellen Sie sicher, dass Ihre Schlüsselwertnamen korrekt sind

  3. sie können den WebConfigurationManager ausprobieren

0
Mehdi Jalal

Dies ist mir passiert, als ich eine Klassenbibliothek (.dll) getestet habe. Sie befanden sich beide im selben Projekt, aber die App.config für die Bibliothek hatte die Einstellungen, die ich brauchte. Die App, die ich zum Testen geschrieben hatte, benötigte die Einstellungen, da it die Bibliothek ausgeführt wurde.

0
bobbins

Ich habe dieses Problem erhalten, als ich ein Projekt aus dem Datei-Explorer kopiert und das Projekt umbenannt hat. Dadurch wurde der Debug-Ordner kopiert. Da ich ihn nicht auf "Copy if newer" gesetzt habe, hat er die alte App.config-Datei nicht überschrieben. 

Löschen Sie einfach den Debug-Ordner und erstellen Sie ihn neu. Hoffe das hilft jemandem.

0
thatOneGuy