Я пишу клиент для службы WCF. Это одно приложение в более крупной системе, которое включает модули, написанные на C #, C ++, VB и Java. Все приложения используют общие механизмы конфигурации и ведения журнала, независимо от того, на каком языке они были написаны.
Я хотел бы выяснить, как создать клиентское приложение так что он будет работать без app.config. Почему? Поскольку большая часть того, что находится в app.config, является шаблоном, который нельзя разрешать изменять системным администраторам, и то, какие настройки системным администраторам следует разрешить изменять, должно быть в общесистемной конфигурации, а не в файле app.config. сидит в каталоге bin.
Показательный пример - клиентское приложение.config в настоящее время выглядит так:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="WSHttpBinding_ICourierService">
<security defaultAlgorithmSuite="Default" authenticationMode="SecureConversation"
...
</security>
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Default" writeEncoding="utf-8">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport manualAddressing="false"
...
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:57102/MyService.svc"
...
>
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
Это набор непрозрачных шаблонов, с которыми системным администраторам не следует иметь дело. Большая часть этого была вставлена Visual Studio. Я сделал одно изменение в файле - увеличил максимальный размер в
. Но это изменение, с которым я не хочу связываться с системными администраторами. И в файле нет ничего другого, с чем я бы хотел, чтобы системные администраторы возились, кроме
.
И я беру адрес конечной точки из общесистемной конфигурации и устанавливаю его в коде. В этом файле нет ничего, что можно было бы редактировать.
Итак, как мне настроить все так, чтобы он не присутствовал?
Могу ли я встроить его как ресурс в сборку и подключиться к процессу загрузки app.config, как я это делаю с необходимыми библиотеками DLL?
Единственный выбор - создать код для настройки, как я использую код для установки адреса конечной точки? Создать в коде необходимые привязки и т. Д.? Тогда как мне узнать, какой код писать, учитывая эти куски непрозрачного XML?