Я пишу клиента в службу WCF. Это одно приложение в более крупной системе, которая включает модули, написанные на С#, С++, VB и Java. Все приложения имеют общие настройки и механизмы регистрации, независимо от того, на каком языке они были написаны.
Я хотел бы выяснить, как создать клиентское приложение, чтобы оно выполнялось без app.config. Зачем? Поскольку большинство из того, что находится в app.config, является шаблоном, который нельзя разрешить системным администраторам, и какие параметры, которые должны быть разрешены для сисадминов, должны быть в общесистемной конфигурации, а не в файле app.config сидя в каталоге bin.
Дело в точке - клиент app.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. Я сделал одно изменение в файле - я увеличил максимальный размер в <readerQuotas/>
. Но это изменение, в котором я не хочу, чтобы сисадмины возились. И ничего больше в файле я хочу, чтобы sysadmins возились, кроме <endpoint address=""/>
.
И я вытаскиваю адрес конечной точки из общесистемной конфигурации и устанавливаю ее в код. В этом файле нет ничего, что должно быть доступно для редактирования.
Итак, как мне настроить такие вещи, чтобы мне не нужно было представлять их?
Могу ли я вставить его в качестве ресурса в сборку и подключиться к процессу загрузки app.config, как это сделать с требуемыми DLL?
Является единственным выбором для создания кода для настройки вещей, как я использую код для установки адреса конечной точки? Создать необходимые привязки и т.д. В коде? Как же тогда я знаю, какой код писать, учитывая эти куски непрозрачного XML?