Web引用配置问题

时间:2012-09-27 15:14:14

标签: web-services web-config asmx web-reference

我正在努力解决如何将网址配置为网络参考。

情况就是这样。我有: 旧的asp.net webservices< ----- c#项目编译成dll< -----引用dll的网站(c#项目以前不在那里,但我将所有代码重构为单独的项目)

因此,网站代码调用c#项目的代码来获取结果,然后调用Web服务。

在c#项目中添加Web引用时,我输入了webservices的网址位置(http://192.168.10.1/TestServices.asmx?wsdl。然后生成一个包含webservices网址的app.config文件。

如果我将web引用设置为static而不是不应该使用config,那就可以了。现在,如果我将web引用设置为动态,则应该使用配置,但由于这是一个正在编译为dll的项目,并且该网站没有app.config,而是我将配置从app.config设置为my web.config appSettings节点我将Web服务的URL更改为另一个(http://192.168.10.2/TestServices.asmx

在c#项目中添加Web引用时,网站仍然会从Web引用指向的旧URL获取结果,因此看起来在URL Behavious设置为Dynamic时未使用配置设置。

我在这里错过了一些微不足道的东西吗?

这是来自app.config的内容:

<applicationSettings>
     <XXXX.Properties.Settings>
      <setting name="XXXX_TestServices_TestServices" serializeAs="String">
       <value>http://192.168.10.1/TestServices.asmx</value>
      </setting>
     </XXXX.Properties.Settings>
    </applicationSettings>

这就是我在web.config中的内容:

<appSettings>
     <add key="XXXX_TestServices_TestServices" value="http://192.168.10.2/TestServices.asmx" />
</appSettings>

所以,现在它总是有趣和内容丰富/教育时,在打字问题和双重检查和搜索相关的问题,你终于自己解决问题..无论如何我发布它的答案,因为我没有找到确切的在一个地方回答,但结合其他2个问题和博客文章。

1 个答案:

答案 0 :(得分:5)

有些资源提到您需要创建设置并需要在代码中更改Web服务代理对象的url属性。这不是必需的,您只需要以正确的方式编辑您的Web配置。

网址不会直接从网站引用网络服务时进入web.config的appSettings部分。

相反,您需要从dll项目中生成的app.config复制整个配置代码,包括定义用于设置正确URL的applicationSettings节点的sectiongroup配置。

对于此特定示例,其中包含web.config中的以下配置代码:

<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="XXXX.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
...
</configuration>

<applicationSettings>
    <XXXX.Properties.Settings>
      <setting name="XXXX_TestServices_TestServices" serializeAs="String">
        <value>http://192.168.10.2/TestServices.asmx</value>
      </setting>
    </XXXX.Properties.Settings>
</applicationSettings>