使用 App.config 动态更改 Windows 服务上的 Web 服务 URL



在我的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]

问题是我的 Web 服务,当我单击它们时,URL 字段仍然显示

"网络引用网址"http://PROD/web/services/XAXSSTRN。XAXSSTRNHttpSoap11Endpoint [![在此输入图像描述][2]][2]

最终目标是什么?将此 Windows 服务发布到开发和生产环境,而无需重新生成整个解决方案。

理想的行为是:

  1. 在开发模式下构建最新的代码(测试它,如果所有测试都很好,那么,步骤 2(

  2. 提供一个 app.config 文件,其中包含要放在 文件夹

  3. 释放

    如您所见,我试图避免的是需要手动删除文件更改这两个 Web 服务,重建解决方案,然后发布......

经典 ASP.NET 应用从 web.config 值的层次结构中获取其配置。 其他应用(控制台应用程序、Windows 窗体应用、WPF、服务等(从名为 [NameOfExe].exe.config 的配置文件(偶尔也会从 [NameOfAssembly].dll.config 获取配置。 该文件与 exe 本身位于同一文件夹中。

例如,如果您的服务是 MyWcfService.exe,则很可能会在同一文件夹中找到 MyWcfService.exe.config 文件(例如,在 bin/debug 文件夹中(。 其内容应与 app.config 相同。

Visual Studio 通过在源文件夹中创建一个 app.config 文件,然后在生成时将该文件的内容复制到与 EXE 位于同一文件夹中的适当命名的 [NameOfExe].exe.config 文件中,使这一切"正常工作"。

在正常情况下,您可能有一组用于开发环境的 URL(可能还有其他数据(,另一组用于 QA,另一组用于集成测试,另一组用于生产。 可以通过使用配置转换来管理此设置。

我认为这在某种程度上有助于回答你的问题。总结

  1. App.config 文件具有与 web.config 几乎相同的功能 文件
  2. App.config 文件被"编译"为 [NameOfExe].exe.config 文件,并放置在 EXE 的同一文件夹中
  3. 配置转换可以帮助您管理 URL

您的另一个选择是管理一组 [NameOfExe].exe。环境].config 文件并手动将它们放在正确的位置。

相关内容

最新更新