WCF:更新服务引用提供重复的配置条目

时间:2009-12-09 10:37:02

标签: wcf configuration app-config service-reference

我有一个使用对WCF服务的服务引用的WPF应用程序。在对服务进行更新时,我需要更新服务引用,因此我右键单击它并点击“更新服务引用”。

执行此操作会导致客户端项目的App.config文件中出现重复条目​​。

  • 它复制 wsHttpBinding 下的绑定 - 在名称中添加一个带有后缀编号的相等条目:WSHttpBinding_ISomeService --> WSHttpBinding_ISomeService1
  • 它复制了 binding 下的端点定义,因此每个 wsHttpBinding 都有一个端点。除了名称之外,这也是纯粹的重复。

为什么要复制配置?是不是应该更新名称?我怎么能让它停下来?

4 个答案:

答案 0 :(得分:3)

您使用的是哪个版本的Visual Studio?这是一个已知的错误,已在VS2010中修复。查看this link

答案 1 :(得分:2)

code-zoop 表示这个已知错误在VS2010中得到了解决,但我也在VS2010中得到了它。

当我手动修改App.config中basicHttpBinding的MaxReceivedMessageSize属性(和其他)的默认值时发生(根据这篇帖子:WCF - How to Increase Message Size Quota

我想提一下,这也发生在VS2010中。目前,我正在接受 Shiraz Bhaiji 的建议,只是删除了副本,这似乎暂时正在发挥作用。

答案 2 :(得分:1)

这也有几次发生在我们身上。

您需要删除重复项,否则它将在运行时崩溃。客户端在配置文件中查找它应该向Interface发送请求的位置(WCF契约X),找到多个请求并崩溃。

答案 3 :(得分:1)

一种解决方法是将服务代理(Web引用)放在自己的DLL中,并从主项目中引用它。

当你执行Update Referene时,它不会触及web.config中的服务代理配置,如果您需要比较默认配置,您将获得具有最新serviceagent配置的项目你在web.config中实际拥有的东西

还有一个好处,如果您有一个服务代理引用另一个服务代理,它将共享类型

MAIN DLL > ServiceAgent1 DLL > ServiceAgent2 DLL

如果ServiceAgent1和ServiceAgent2具有共享类型,则不会获得两个生成的重复类