【问题标题】:Adding Service Reference for WCF Service generates empty reference.cs为 WCF 服务添加服务引用会生成空的 reference.cs
【发布时间】:2013-04-13 01:29:09
【问题描述】:

我以前见过这个问题(here 一个),但是解决方案是不重用引用的程序集。 我需要重用包含的程序集,因为多个服务引用相同的共享对象。 如果我不重用程序集,我会收到命名空间错误,因为通过引用相同的对象 不同的命名空间。 (即Service1.Object,Service2.Object)

简而言之,我需要生成的 Client 类扩展了 Web 服务的 ClientBase,但我无法取消选中重用引用的程序集,因为我需要具有相同命名空间的共享对象。有什么建议吗?

【问题讨论】:

标签: c# .net wcf service-reference


【解决方案1】:

您可以使用 svcutil.exe 生成您的客户端代理,并使用 /r 开关来指定您想要引用而不是在自动生成的程序中重新发出的程序集客户端代理代码。

  • ProjACommon
  • ProjBSvc
    • 参考 ProjACommon
  • ProjCClient
    • 参考 ProjACommon
    • 您希望客户端引用 ProjA 类型和/或代码,而不是将它们自动生成到 C 中的新命名空间中

在构建 ProjBSvc exec 之后,输出 .wsdl & .xsd

svcutil.exe ProjBSvc.dll

第二次使用 wsdl 和 xsd 来生成代理/客户端:

svcutil.exe *.wsdl *.xsd /o:<ProjCClientPath>/Client.cs /r:ProjACommon.dll

ProjCClient 引用之前步骤生成的 Client.cs

使用对象浏览器构建和检查,您将看到 C 中的类型引用 A 中的类型,而不是 C 命名空间中具有相同名称的新类型。 您可能需要/tcv/n 以及其他开关来满足您的需求。

这里有一个article 可能会有所帮助。它还链接到Microsoft documentation for svcutil

【讨论】:

  • 您能否参考一个很好的示例或链接,我可以在其中获得更多详细信息?
【解决方案2】:

使用映射器,这意味着您必须复制模型(对象)并有一个类将对象从一个命名空间映射到下一个命名空间。

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 2014-03-22
    • 2012-03-02
    • 1970-01-01
    • 2013-05-17
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多