2017-08-09 4 views
0

J'essaie de comprendre comment configurer une application .netcore..NET Core, Parallel Exécution de la même application avec une configuration différente possible?

Szenario:

Je courais le même repos api (application) pour client1 et client2 sur le même serveur dans le DEV-environnement. Nous avons des configurations spécifiques à l'environnement ainsi que des configurations spécifiques au client.

"Old" Way:

Avec transformations web.config, j'ai créé pour construire des configurations dev-client1 et dev-client2 et définir les valeurs en conséquence ... tout cela a bien fonctionné.

Way "Nouveau":

Comme le appsettings.json dépend de la fenêtre variable d'environnement (un par serveur) et donc d'avoir des problèmes. Je ne pouvais pas trouver un moyen de lancer les applications en parallèle sur le même serveur avec des configurations différentes.

J'ai peut-être mal compris la nouvelle façon de configurer une application, donc toute aide serait appréciée.

Répondre

0

dans une nouvelle typique application Web .NET de base, vous verrez ce code dans le Startup.cs:

 var configuration = new ConfigurationBuilder() 
      .AddJsonFile("appsettings.json") 
      .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables() 
      .Build(); 

tout ce que vous devez faire est d'ajouter un autre appsettings fichier avec des paramètres spécifiques au client, comme:

  .AddJsonFile($"appsettings.client.json", optional: true) 

puis ont votre copie du script de construction dans la configuration de construction correcte à appsettings.client.json. le ConfigurationBuilder va ramasser les paramètres dans toutes les sources et les compiler dans l'objet configuration.

vérifier également les documents complets:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration

+0

Merci pour la réponse dave. Je suis au courant de la documentation de Microsoft et de la partie de constructeur de configuration. Si je vous comprends bien, le script de construction décide alors du bon fichier à choisir. Par exemple. mon serveur de construction trie la manipulation du fichier client maintenant ... si c'est la seule façon d'y aller, pourquoi devrais-je m'inquiéter de l'appsettings.environment du tout? Je pense juste que la variable d'environnement enlève beaucoup de flexibilité par rapport à la transformation web.config ... – adini

+0

appsettings. {Environnement} .json et les variables d'environnement sont seulement pour les paramètres qui changent par environnement, comme dans Test, Staging, Production , c'est-à-dire, les chaînes de connexion, ws endpoints, etc. ces paramètres affecteront les applications sur la boîte entière. Je suppose que vous avez plusieurs clients sur la même boîte dans, disons, un environnement de production? À ce stade, vous aurez besoin d'un fichier appsettings distinct par client (par pool d'applications) que votre processus de génération ou de déploiement peut produire, ou d'un scénario multi-locataire qui est un autre ensemble de vers. –

+0

C'est ainsi que j'ai compris la "nouvelle" façon de fonctionner .netcore fonctionne. J'échange des fichiers déjà pendant le processus de construction, mais je cherchais une solution similaire à celle que nous avions mise en place auparavant. Je pense toujours que c'est un pas en arrière par rapport aux transformations. Par exemple. dans le processus de construction, je cours int. tests contre un sep. base de données sur mon serveur de dev (même machine). Pour cela, il échoue déjà. On pourrait argumenter que les chaînes de connexion ne devraient pas aller dans app.config, mais ce n'est pas le point.Il aurait été agréable de pouvoir passer un "paramètre d'environnement" sur la construction ou similaire à la configuration de construction ... – adini