L'Accès Web.paramètres de configuration dans Asp.Net de Base de l'App?

Je comprends que asp.net le noyau d'un nouveau système de configuration qui est très flexible et c'est génial. Mais il y a des choses que j'aime sur le web.config en fonction de la configuration du système à partir de .net 4.x. Par exemple, on peut mettre des commentaires dans le site web.fichier de configuration depuis un fichier xml. Et qui pour moi vaut la peine de coller avec xml plutôt que d'aller avec le tout nouveau json approche. [Mise à jour: je comprends maintenant que le json approche prend également en charge les commentaires dans le fichier.]

Donc, si j'ai un Asp.Net Web de Base du Projet qui vise le plein cadre, il semble que je devrais être en mesure d'utiliser le web.config à base System.Configuration.ConfigurationManager.AppSettings[key] approche pour l'obtention d'un paramètre.

Mais quand j'essaie, la valeur revient toujours null (au moins avec IIS express à l'aide d'VS2015).

Il devrait fonctionner correctement? Toute réflexion sur ce que je pourrais être plus de la recherche?

Web.config

<configuration>
    <appSettings>
        <add key="SomeSetting" value="true"/>
    </appSettings>

    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
        </handlers>

        <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
     </system.webServer>
</configuration>

Code de paramètre d'accès:

string key = "SomeSetting";
string setting = ConfigurationManager.AppSettings[key];
if (setting == null)
       throw new Exception("The required configuration key " + key + " is missing. ");

Mise à JOUR

Après plusieurs recherche je comprends maintenant pourquoi il ne fonctionne pas, mais je n'ai toujours pas trouvé un moyen pour résoudre ce problème. La cause semble être que le ConfigurationManager est à la recherche pour les informations de configuration dans un fichier différent et pas dans le web.config.

Ce qui peut être vu en regardant AppDomain.CurrentDomain.SetupInformation.ConfigurationFile de la propriété. Dans mon cas, au lieu de pointer les website_folder\web.config c'est plutôt pointant vers website_folder\bin\Debug\net461\win7-x64\wwwGiftOasisResponsive.exe.Config où website_folder est le chemin vers le dossier contenant mon site web.

La documentation et de l'intellisense dire AppDomain.CurrentDomain.SetupInformation.ConfigurationFile est réglable propriété mais quand j'essaie, je trouve que le réglage ne change pas la valeur. Très bizarre.

Ainsi, alors que je vois maintenant ce que le problème est que je n'arrive pas à trouver un moyen pour résoudre ce problème.

  • Vous pouvez avoir un .xml au lieu d'un .json et l'utilisation de la XmlConfigurationProvider
  • Peut-être que je me trompe, mais j'ai l'impression que vous pensez qu'il n'est pas possible de faire des commentaires dans les fichiers de configuration json. Microsoft.Extensions.La Configuration.Json prend en charge les commentaires.
  • merci, c'est un bon plan de secours, je vais regarder dans. Encore, je ne comprends pas pourquoi ConfigurationManager ne peut pas être utilisée pour obtenir les valeurs à partir du web.config...
  • vous n'êtes pas mauvais, ma compréhension était que xml ne prend pas en charge les commentaires. Pouvez-vous fournir un lien vers un article ou d'autres documents qui montrent qu'il prend en charge les commentaires dans le fichier xml?
  • Je ne trouve pas la documentation, mais, dans ce numéro (github.com/aspnet/Configuration/issues/87), le dernier commentaire dit: "Bon, maintenant, à la fois seule ligne et les commentaires de plusieurs lignes de travailler sur des fichiers json." Et regardez le test ici: github.com/aspnet/Configuration/blob/release/test/... Cherchez "SupportAndIgnoreComments' à la ligne 65.
  • J'ai vérifié que appsettings.json n'en fait siennes les observations. J'apprécie vraiment que vous le signaler pour moi. À la fin, je vais tirer profit de la nouvelle .net config de base du système, grâce à ce savoir. Je vous remercie.
  • Une idée de comment faire l'inverse? Je suis de l'accès à un non classe de base de la bibliothèque à partir d'une base mvc 2 app. Comment puis-je passer à travers le web.config chaîne de connexion?
  • Qui est le mieux demandé que de son propre question sur DONC.

InformationsquelleAutor Ron C | 2016-10-21