【问题标题】:WCF: Updating Service Reference gives duplicate config entriesWCF:更新服务参考提供重复的配置条目
【发布时间】:2010-12-24 18:53:40
【问题描述】:

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

这样做会导致客户端项目的 App.config 文件中出现重复条目​​。

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

为什么会重复配置?不就是要更新名字吗?我怎样才能让它停止?

【问题讨论】:

    标签: wcf configuration app-config service-reference


    【解决方案1】:

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

    你需要删除重复的,否则它会在运行时崩溃。客户端在配置文件中查找它应该向接口(WCF 合约 X)发送请求的位置,找到多个,然后崩溃。

    【讨论】:

    • 是的,我已经看到了.. 还可以设置绑定名称,以便使用一个特定的绑定,因此添加的新绑定将被忽略。但我希望不要创建重复项 - 如果可能的话..你知道为什么会发生吗?有什么办法可以预防吗?..
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      当您执行Update Referene 时,它不会触及您 web.config 中的服务代理配置,并且作为奖励,如果您需要将默认配置与默认配置进行比较,您将拥有一个具有最新服务代理配置的项目你实际上在 web.config 中有

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

      MAIN DLL > ServiceAgent1 DLL > ServiceAgent2 DLL
      

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

      【讨论】:

        【解决方案4】:

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

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

        只是想我会提到这也发生在 VS2010 中。目前,我正在接受 Shiraz Bhaiji 的建议并删除重复项,这似乎暂时有效。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        相关资源
        最近更新 更多