J'ai un service web WCF ASP.Net 4.0 que nous appellerons "WebService". WebService consomme un assemblage de bibliothèque de classes que nous appellerons "WebServiceClassLibrary". WebServiceClassLibrary fait référence à un autre assembly de bibliothèque de classes ("ExternalClassLibrary"). ExternalClassLibrary est construit pour utiliser un fichier de configuration. Il utilise ce fichier pour savoir où envoyer des messages HTTP lors de l'exécution. J'ai un problème où peu importe où je semble mettre la section de configuration pour ExternalClassLibrary il semble utiliser la configuration par défaut (un comportement que je suis venu à attendre quand il ne peut pas trouver un fichier de configuration à l'exécution).Où .Net recherche-t-il mon fichier de configuration?
Je suppose que cela signifie que lorsque .Net tente de trouver la configuration pour ExternalClassLibrary, il ne peut pas le faire et utilise les informations de configuration trouvées dans l'assembly compilé. J'ai tenté de remplacer cette configuration en plaçant une section de configuration dans le fichier web.config pour WebService, en créant un fichier de configuration pour ExternalClassLibrary et en créant un fichier de configuration pour WebServiceClassLibrary. Même si j'essaye de remplacer la configuration dans chacun de ces endroits, il finit toujours par utiliser la configuration par défaut. J'héberge le site dans IIS 7.
Quelqu'un peut-il me dire comment je peux déterminer où j'ai besoin de placer cette information de configuration prioritaire? J'ai essayé d'utiliser le moniteur de processus de SysInternals pour voir les tentatives de lecture de système de fichiers qui échouent mais cela montre seulement deux endroits possibles pour remplacer la configuration et aucun d'eux n'a fait l'affaire.
Appréciez-le!
- MISE À JOUR, Voici le contenu du fichier XML que je suis en train de charger -
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyAppName.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<MyAppName.Properties.Settings>
<setting name="APIURL" serializeAs="String">
<value>http://servername/default.html</value>
</setting>
<setting name="APIAPPINI" serializeAs="String">
<value>app.ini</value>
</setting>
<setting name="ApiUrlRoot" serializeAs="String">
<value>https://www.domain.com/company[instance]test/index.htm</value>
</setting>
<setting name="ApiInstances" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>usa</string>
<string>eu</string>
<string>asia</string>
<string>lat</string>
<string>jpn</string>
</ArrayOfString>
</value>
</setting>
<setting name="ApiKey" serializeAs="String">
<value>password</value>
</setting>
<setting name="ApiUrlRoot" serializeAs="String">
<value>http://site[instance].domain.com/</value>
</setting>
<setting name="ProductId" serializeAs="String">
<value>12345</value>
</setting>
</MyAppName.Properties.Settings>
</applicationSettings>
</configuration>
Vous ne savez pas si cela va vous aider, mais j'avais une question similaire sur les fichiers de configuration pour les bibliothèques de classes il y a un certain temps .... http://stackoverflow.com/questions/2526202/where-are-config-files-for-class-libraries-physically-located –
La plupart des articles sur cette page parlent du fichier de configuration utilisé par l'application parente ou consommatrice. C'est ce que j'ai trouvé être vrai dans le passé, mais pour une raison quelconque, cela ne se produit pas maintenant. Semble peu fiable. WebService est l'application consommatrice mais l'ajout de la configuration à ce fichier n'entraîne pas l'utilisation de valeurs mises à jour. – omatase