Я сталкиваюсь с проблемой.
У меня есть dll, который взаимодействует с веб-сервисом, и он сохраняет свою конфигурацию конечной точки в его app.config файле.
Я хочу использовать этот dll из своего хост-приложения. Хост-приложение имеет свой собственный файл конфигурации. Я должен объединить содержание конфигурации dll к конфигурации хоста каждый раз, когда я изменяю сервисную конечную точку.
Есть ли способ, которым я могу использовать оба файла конфигурации. Таким образом, dll использует свою собственную конфигурацию тогда как использование хост-приложения его собственная конфигурация.
конфигурационные файлы могут включать внешние файлы.
Если вы поместите конфигурацию конечной точки во внешний файл, а затем включите его в yout host, вам не нужно будет каждый раз менять конфигурацию хоста
например: в вашем файле app.config:
...
<configSections>
...
<section name="myEndpoint" type="System.Configuration.DictionarySectionHandler" />
...
</configSections>
...
<myEndpoint configSource="myEndpoint.config" />
затем myEndpoint. config может выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<myEndpoint>
<add key="myKey" value="myValue" />
</myEndpoint>
и вы можете получить доступ к значениям из вашего кода, аналогично чтению обычных настроек приложения, например:
var myEndpointConfig = (Hashtable)ConfigurationManager.GetSection("myEndpoint");
Console.WriteLine(myEndpointConfig["myKey"]);
Правильный путь - это слияние конфигурационного файла DLL в EXE; это сработает нестандартно. Но смотрите .NET DLL Settings and Config when there's a Web Reference - whats goings on? , чтобы узнать, как явно открыть конфигурационный файл и прочитать его. Проблема в том, что сначала вам нужно будет ввести FIND конфигурационный файл, а это не всегда просто. Если DLL просто сидит, вы можете проверить ту же самую директорию. Но если она в GAC, куда вы смотрите? Я предлагаю придерживаться правильного пути.
Это может помочь, если вы используете svcutil для генерации прокси: проверьте переключатели /config:
и /mergeConfig
, с помощью которых вы можете указать, какой конфигурационный файл получает сгенерированную информацию, и вы можете объединить его, вместо того, чтобы просто перезаписывать то, что уже есть.