MVC 3 obtention de valeurs de AppSettings dans le web.config
Normal ASP.NET formulaires Web sites je voudrais utiliser le web.les configs "appsettings" pour ajouter le paramètre d'application des données à un site. Cependant, je ne suis pas en mesure de récupérer les valeurs des paramètres de cette manière lors de l'utilisation de MVC 3.
Tout d'abord, il y a 2 web.les fichiers de configuration. L'un à la racine du site, le second est répertorié dans la zone affichage. Je suppose que j'ai envie de mettre mon appsettings de l'information dans le site web racine.fichier de config, correct? (en le mettant dans l'autre, en vertu de vues semble produire un message d'erreur indiquant "AppSettings" ne peut apparaître qu'une seule fois par une application web.)
Quand j'essaie de la récupérer (C#: Système.La Configuration.ConfigurationManager.AppSettings["SettingName"]), je reçois un vide ou vide/null valeur de retour. Ce que je fais mal?
Je dois préciser que je suis actuellement à la recherche de ces informations dans un fichier de Classe sous les Modèles de zone pour définir des valeurs spécifiques à un modèle à l'aide de get; set;. Est-il possible que je ne suis pas autorisé à le faire dans les Modèles?
Dans un Contrôleur.cs:
WindowsLiveConnect.ServiceConfiguration WLSC = new WindowsLiveConnect.ServiceConfiguration();
ViewBag.ClientID = SC.ClientID; //This returns empty
Dans le 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>
...
Dans le Modèle.cs fichier:
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) Utiliser le web.config au niveau de la racine. 2) Votre
set
mise en œuvre n'est pas correct. Comme vous l'avez maintenant, votreclientid
n'est pas initialisé jusqu'à ce que vous appeler explicitementServiceConfiguration.ClientID = ...
qui va ensuite lui assigner une valeur à partir de AppSettings.
Vous devez vous connecter pour publier un commentaire.
Habituellement, je suis en utilisant AppSettings classe statique pour accéder à ces paramètres. Quelque chose comme ceci:
Êtes-vous jamais l'appel de set? J'imagine qu'il n'est jamais appelée, pour la variable privée n'est jamais la valeur de la config.
Essayer de cette façon (juste récupérer la valeur dans la, aucune configuration nécessaire):
J'ai fait de cette façon:
En regardant le code, je suppose que vous utilisez le fournisseur de sharepoint hébergé apps?
La meilleure chose à faire ici en mvc, c'est ignorer le web.config qui est sur le point de vue du niveau et de n'utiliser l'un à la racine de la webapplication.
L'autre chose que je veux mentionner, c'est que c'est probablement pas une bonne idée de récupérer les informations de configuration à partir du web.config dans le modèle actuel.
Son mieux pour le déplacer, soit à :
- le constructeur du contrôleur
- l'usine/référentiel qui retourne ce modèle