Comment lire web.fichier de configuration .Net de Base app
J'ai créé un .Net API de Base et que j'ai référencé une .Net framework d'application. Référencé Application se connecte à une base de données et de sa chaîne de connexion sont stockées dans le web.fichier de configuration:
string CONNSTR =ConfigurationManager.ConnectionStrings["SHOPPINGCNN"].ConnectionString;
L' .Net application de Base utilise appsettings.json au lieu de web.fichier de configuration. Quand je lance l'API et essayez d'utiliser le référencés ressources de l'application, le code ci-dessus sera déclenchée et sera de retour nulle, car il n'y a pas de site web.fichier de configuration .net de Base app. Quelle est la meilleure solution pour résoudre ce problème
vous pouvez ajouter un site web config
Je l'ai déjà fait mais je n'ai pas la chaîne de connexion
Il ne serait plus .net-de base-app-comme approche pour stocker la chaîne de connexion dans appsettings.json.
avez-vous résolu le problème?
J'ai trouvé la solution. J'ai changé le nom de la
Je l'ai déjà fait mais je n'ai pas la chaîne de connexion
Il ne serait plus .net-de base-app-comme approche pour stocker la chaîne de connexion dans appsettings.json.
avez-vous résolu le problème?
J'ai trouvé la solution. J'ai changé le nom de la
Web.config
à app.config
et j'ai été en mesure d'obtenir la chaîne de connexion à l'aide de: System.Configuration.ConfigurationManager.ConnectionStrings["SHOPPINGCNN"].ConnectionString
La app.config
fichier ressemble à ceci: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="SHOPPINGCNN" connectionString="server=.\SQLEXPRESS;integrated security=true;database=xxxxx" /> </connectionStrings> </configuration>
OriginalL'auteur Zuhair | 2017-10-29
Vous devez vous connecter pour publier un commentaire.
.net de base vous pouvez utiliser
ConfigurationBuilder
à lire appsettings.fichier json.Vous pouvez mettre en œuvre comme suit.
appsettings.json échantillon
Exemple de code C#
appsettings.json
mais c'est le cas lorsque vous vous connectez à une base de données à l'aide de.Net Core
de la demande, mais, dans mon cas, Im le référencement d'un.Net Framework
d'application, qui utilisepublic static string CONNSTR = ConfigurationManager.ConnectionStrings["SHOPPINGCNN"].ConnectionString;
dans son DataAccess classe donc essayer d'utiliser une ressource à partir de cette application dans monCore
demande le code ci-dessus sera déclenchée et sera de retour la valeur null car il n'y a pas de chaîne de connexion existent dans unWeb.config
fichierpour garder la chaîne de connexion dans les meilleures pratiques, vous devriez essayer de le garder dans appsettings.fichier json qui est le fichier de configuration par défaut .net de base
Je l'ai déjà expliqué pourquoi Im en utilisant le style ancien fichier de configuration. Que feriez-vous si vous faites référence .Net Framework assemblée qui est de sa chaîne de connexion à l'aide de
ConfigurationManager.ConnectionStrings
?. Il ne peux pas obtenir de sa chaîne de connexion à l'aide .Net des normes de Base. Qu'en pensez-vous?qui a été utile.
Est-ce à dire j'ai besoin d'exécuter ce code dans chaque classe où je vais faire référence à une chaîne de connexion?
OriginalL'auteur hasan
Pour .NET applications de Base, le meilleur moyen est d'utiliser le Configuration de l'API. C'est une façon très souple et, grâce à des fournisseurs de modèle, il permet d'utiliser différentes sources, et pas seulement les plus courants
appsettings.json
fichier (qui, par la manière, juste un fichier JSON et qui pourrait être appelée de façon aléatoire):Maintenant sur
ConfigurationManager
. Au premier abord, l' .NET de Base forcé d'oublier cette classe, il n'a pas été appliquée et soutenue, et l'idée était de remplacer entièrement en fournissant nouvelle Configuration de l'API.En outre, la réalité est que ASP.NET applications de Base ne sont pas hébergé par IIS (IIS fonctionne principalement comme un proxy inverse maintenant), et donc la
web.config
n'est pas tellement plus utile (sauf les rares cas où vous avez encore besoin de définir des paramètres spécifiques à la configuration de IIS).Si, après l' .NET Standard 2.0 a été fournie, ce Système.La Configuration.ConfigurationManager nuget package est disponible et apporte le
ConfigurationManager
classe. Il est devenu possible grâce à de nouvelles compatibilité cale en œuvre dans les nouveaux .NET Core 2.0.Au sujet de votre cas, il est difficile de dire pourquoi vous avez 'null', comme elle n'est pas suffisamment d'informations:
System.Configuration.ConfigurationManager
avec Web.config, mais encore ne peux pas obtenir la chaîne de connexion.même ici, appsettings est toujours vide
Jamais trouver une solution?
OriginalL'auteur Set
Dans le cas où vous l'auriez manqué - et parce que @Zuhair ne semble pas vouloir poster une réponse, voici un copier coller de leur solution (j'ai manqué d'abord ce que c'est seulement dans un commentaire):
Vous devez également installer ce package NuGet:
Dans mon cas, j'ai simplement renommé le web.config contenant la connectionString 'app.config' et cela a fonctionné.
Je me rends compte que ce n'est probablement pas une bonne solution sur le long terme mais pour l'héritage mitigé projets ou pour obtenir un pied dans la porte pour commencer à apprendre .net de Base il est très utile.
OriginalL'auteur niico
Parce que .Net applications de Base sont auto-hébergé et il peut fonctionner sur n'importe quelle plateforme , ils ne sont plus hébergé sur l'ISS. L' .Net de Base les paramètres de l'application sont stockées dans une
Json
format (appsettings.json
) par défaut .Net Framework configurations d'application sont stockées dans uneweb.config
fichier dansXML
format. Pour plus d'informations sur .Net applications de Base, vous pouvez lire Dans la Configuration ASP.NET de Base . Dans mon cas, j'ai essayé d'accéder à la couche de données d'un .Net Framework assemblée .Net Core 2.0 assemblée.Pour atteindre cet objectif, il n'est pas nécessaire d'installer Système.La Configuration.ConfigurationManager paquet dans le .Net application de Base, mais vous avez seulement besoin d'ajouterapp.config
à l' .Net de l'assemblée, puis ajoutez la chaîne de connexion:et tout fonctionnera correctement. Assurez-vous que vous utilisez la même chaîne de connexion (nom de
SHOPPINGCNN
dans mon cas) que vous avez utilisé dans votre .Net Framework application sinon vous n'obtiendrez pas le résultat souhaité. Je l'ai fait en mon projet et il fonctionne à 100%OriginalL'auteur Zuhair