【问题标题】:WCF service reference stopped generating code for one projectWCF 服务引用停止为一个项目生成代码
【发布时间】:2011-01-01 18:38:54
【问题描述】:

我在一个项目中引用了两个不同的 WCF 服务。我更新了其中一项服务的参考,现在没有为它生成任何代码。 references.cs 文件顶部只有“这是生成的代码”注释。在其他项目中更新相同的服务并更新其他服务都可以正常工作。只是这个项目中的一个服务引用导致了问题,我没有从 Visual Studio 获得任何信息(它只是说它无法生成代码,我应该查看其他错误,这些错误没有提供任何信息)。

如果我取消选中“引用程序集中的重用类型”,则会生成代码,但我不希望这个项目与其他项目不同。我想解决问题。重新检查重用类型选项会再次生成一个空的 references.cs 文件。集合类型似乎也无关紧要。

如何诊断和解决这个问题?

更新:

看来我错了。更新服务引用似乎也破坏了其他项目的生成。我也确实注意到了这些警告:

自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:无法导入命名空间“http://schemas.datacontract.org/2004/07/System”中数据合同名称为“Exception”的 ISerializable 类型。无法为 ISerializable 类型自定义数据协定命名空间,并且生成的命名空间“TheDefaultNamespaceOfTheProject.ServiceReferenceName”与所需的 CLR 命名空间“System”不匹配。检查所需的命名空间是否已映射到不同的数据协定命名空间,并考虑使用命名空间集合显式映射它。

显然我在那里更改了命名空间,但它似乎试图将 System.Exception 映射到 ThatNamespace.Exception?为什么会这样做,我该如何纠正?我认为这是整个事情的关键。

【问题讨论】:

  • 尝试使用命令行 svcutil.exe 程序。它的优点是可以将错误消息输出到控制台。
  • 运行成功并生成代码。这是出于诊断目的,还是使用它而不是 Visual Studio 中的服务合同实用程序的想法?

标签: wcf generated-code service-reference


【解决方案1】:

我在进行 WCF 调用的 Silverlight 应用程序中遇到了类似的错误。我创建了一个将异常对象作为参数传递的 WCF 方法。事实证明 Exception 对象在 Silverlight 中是不可序列化的,因为:

http://blogs.msdn.com/b/suwatch/archive/2009/01/21/wcf-silverlight-exception-and-serialization.aspx

以下是相关摘录:

WCF 的 DataContractSerializer 序列化 Exception 类通过 ISerializable(.Net Framework 中的异常实现 ISerializable)。 但是,在 Silverlight 中,没有 ISerializable 接口。 因此,Exception 的序列化信息通过 wire 不会被设置到 Exception 类中。这不仅 适用于 Exception 但也适用于实现 ISerializable 的任何类型 .Net Framework 序列化为 Silverlight。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-20
    • 2011-03-21
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多