在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服务发布到开发人员和产品环境,而无需重建整个解决方案。
理想的行为是:
在开发人员模式下构建最新代码(对其进行测试,如果所有测试都正确,则进行步骤2)
提供带有prod网址的app.config文件,以将其放入 文件夹
发布
正如您所看到的,我要避免的是需要手动删除文件以更改这两个Web服务,重建解决方案并随后发布...
答案 0 :(得分:1)
经典ASP.NET应用程序从web.config值的层次结构中获取配置。其他应用程序(控制台应用程序,Windows Forms应用程序,WPF,服务等)从名为[NameOfExe] .exe.config的配置文件(有时也从[NameOfAssembly] .dll.config中获取配置)。该文件位于与exe本身相同的文件夹。
例如,如果您的服务是MyWcfService.exe,则很可能会在同一文件夹(例如,bin / debug文件夹)中找到MyWcfService.exe.config文件。其内容应与您的app.config相同。
Visual Studio通过在源文件夹中创建一个app.config文件,然后在构建时将该文件的内容复制到目录中适当命名的[NameOfExe] .exe.config文件,使所有这些工作都“正常”。与EXE相同的文件夹。
在通常情况下,您可能为开发环境提供一组URL(可能还有其他数据),为QA提供一组URL,为Integration Test提供一组URL,为Prod提供另一组URL。您可以使用configuration transforms来进行管理。
我认为这有助于回答您的问题。总结
您的另一选择是管理一组[NameOfExe] .exe。[Environment] .config文件,并将它们手动放置在正确的位置。