In normalen ASP.NET Web Forms-Sites würde ich web.configs "appsettings" verwenden, um Anwendungseinstellungsdaten zu einer Site hinzuzufügen. Ich kann jedoch auf diese Weise keine Einstellungswerte abrufen, wenn MVC 3 verwendet wird.MVC 3 ruft Werte von AppSettings in web.config ab
Als Erstes gibt es 2 web.config-Dateien. Eine im Stammverzeichnis der Site, die zweite im Bereich Views. Ich nehme an, dass ich meine Appsettings-Informationen in die Stammdatei web.config legen möchte, richtig? (Das Einfügen in die anderen Ansichten scheint einen Fehler zu erzeugen, der besagt, dass "AppSettings" nur einmal pro Webanwendung angezeigt werden kann.)
Wenn ich versuche, es abzurufen (C#: ]) Ich bekomme einen leeren oder leeren/null Rückgabewert. Was mache ich falsch?
Ich sollte erwähnen, dass ich diese Informationen tatsächlich in einer Klassendatei unter dem Bereich Modelle abruft, um spezifische Werte für ein Modell mit get festzulegen; einstellen;. Ist es möglich, dass ich das nicht in Models machen darf?
In einem Controller.cs:
WindowsLiveConnect.ServiceConfiguration WLSC = new WindowsLiveConnect.ServiceConfiguration();
ViewBag.ClientID = SC.ClientID; // This returns empty
In web.config
...
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="ClientID" value="0000000040062A3F" />
<add key="ClientSecret" value="SUPERSECRETPASSWORD" />
<add key="RedirectURL" value="http%3A%2F%2Fwww.quilnet.com" />
</appSettings>
...
In der Model.cs Datei:
public class ServiceConfiguration
{
private string clientid;
private string clientsecret;
private string redirecturl;
public string ClientID
{
get { return clientid; }
set
{
clientid = System.Configuration.ConfigurationManager.AppSettings["ClientID"];
}
}
public string ClientSecret
{
get { return clientsecret; }
set
{
clientsecret = System.Configuration.ConfigurationManager.AppSettings["ClientSecret"];
}
}
public string RedirectURL
{
get { return redirecturl; }
set
{
redirecturl = System.Configuration.ConfigurationManager.AppSettings["RedirectURL"];
}
}
}
1) Verwenden Sie die web.config bei die Root-Ebene. 2) Ihre 'set' Implementierung ist nicht korrekt. Wie Sie es jetzt haben, wird Ihre 'clientid' nicht initialisiert, bis Sie' ServiceConfiguration.ClientID = ... 'explizit aufrufen, die dann einen Wert aus AppSettings zuweisen. – Jasen