динамически изменять URL-адрес веб-службы в службе windows с помощью app.config

В моей службе Windows у меня есть 2 веб-ссылки

Моя служба Windows содержит только app.config, а не web.config

моя конфигурация приложения выглядит так:

    <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="MyFirstWindowsService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <system.serviceModel>
        <bindings />
        <client />
    </system.serviceModel>
    <applicationSettings>
        <MyFirstWindowsService.Properties.Settings>
            <setting name="MyFirstWindowsService_postDataToMapicsWC_XAXSSTRN"
                serializeAs="String">
                <value>http://TESTDEV/web/services/XAXSSTRN.XAXSSTRNHttpSoap11Endpoint/</value>
            </setting>
            <setting name="MyFirstWindowsService_com_goodmanmfg_testdev_GETITMINFO"
                serializeAs="String">
                <value>http://TESTDEV/web/services/GETITMINFO.GETITMINFOHttpSoap11Endpoint/</value>
            </setting>
        </MyFirstWindowsService.Properties.Settings>
    </applicationSettings>
</configuration>

[! [введите описание изображения здесь] [1]] [1]

проблема заключается в моих веб-сервисах, когда я нажимаю на них, что поле URL по-прежнему говорит

«URL веб-ссылки» http: //PROD/web/services/XAXSSTRN.XAXSSTRNHttpSoap11Endpoint [! [Введите описание изображения здесь] [2]] [2]

Какова конечная цель? Чтобы освободить эту службу Windows для сред dev и prod без необходимости пересортировать все решение.

Идеальное поведение:

  1. Создайте последний код в режиме dev (протестируйте его, если все хорошо проверите, затем, шаг 2)

  2. Предоставьте файл app.config с URL-адресами prod, которые нужно удалить в папку

  3. Выпуск

    Поскольку вы можете видеть, что я пытаюсь избежать, необходимо отказаться от файла, вручную изменяя эти 2 веб-службы, перестроить решение И затем освободить ...

c#,web-services,windows-services,app-config,

0

Ответов: 1


1

Классические приложения ASP.NET получают свою конфигурацию из иерархии значений web.config. Другие приложения (консольные приложения, приложения Windows Forms, WPF, Services, ...) получают конфигурацию из файла конфигурации с именем [NameOfExe] .exe.config (а иногда из [NameOfAssembly] .dll.config. Этот файл находится в той же папке, что и сам exe.

Например, если ваша служба - MyWcfService.exe, вы, скорее всего, найдете файл MyWcfService.exe.config в той же папке (например, в папке bin / debug). Его содержимое должно быть таким же, как ваш app.config.

Visual Studio делает все это «просто работой», создавая файл app.config в исходной папке, а затем во время сборки копируя содержимое этого файла в файл с соответствующим именем [NameOfExe] .exe.config в той же папке, что и EXE.

В нормальном случае у вас может быть один набор URL-адресов (и, возможно, других данных) для вашей среды разработки, другой для QA, другой для Integration Test и другой для Prod. Вы можете управлять этим с помощью конфигурационных преобразований .

Я думаю, что это как-то способ ответить на ваши вопросы. В итоге

  1. Файлы App.config имеют почти те же возможности, что и файлы web.config
  2. Файлы App.config получают «скомпилированные» файлы [NameOfExe] .exe.config во время сборки и помещаются в ту же папку в EXE
  3. Преобразования конфигурации могут помочь вам в управлении вашими URL-адресами

Ваш другой выбор - управлять набором файлов [NameOfExe] .exe. [Environment] .config и вручную помещать их в нужное место.

C #, веб-сервисы, окна-услуги, приложение-конфигурация,
Похожие вопросы