У меня есть проект библиотеки exe. Этот проект представлен в качестве ссылки в моем веб-приложении, которое имеет все те же элементы конфигурации в собственной конфигурации. Легкие вызовы выполняются непосредственно классам в проекте exe на внутрипроцессной основе, но тяжелые (гигабайты использования памяти) вызовы выполняются из командной строки.
У меня есть следующие элементы конфигурации, дублированные в файл AppName.config, а также файл Web.config:
<configuration>
<appSettings>
...
</appSettings>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding ... />
<readerQuotas ... />
<security>...</security>
</basicHttpBinding>
</bindings>
<client>
<endpoint ... />
</client>
</system.serviceModel>
AppSettings относительно просты, так как их можно делегировать во внешний файл конфигурации. Привязка модели сервиса отсутствует, так как она не может быть делегирована. Единственное, о чем я могу думать, это:
1) Настройте канал для приложения в режиме командной строки, выполнив поиск в файле web.config в текущем, родительском, родительском (и т. Д.) Каталогах, загрузив его в XmlDocument, захватив атрибуты и установив его в канале. свойства напрямую.
2) Перед вызовом exe-файла в веб-приложении извлеките элементы appSettings и system.serviceModel из родительского файла Web.config и запишите их в файл AppName.config, если Web.config новее. Тем не менее, мой exe находится в каталоге приложений Bin из-за общих библиотек DLL, и запись в / Bin принудительно перезапустит мое веб-приложение .... ой.
Многие из моих свойств канала важны и не могут быть значениями по умолчанию. Есть ли лучший способ?