【问题标题】:Why might VS "Add Service Reference" not generate interfaces for servicecontracts that svcutil recognizes just fine?为什么 VS“添加服务引用”不能为 svcutil 识别得很好的服务合同生成接口?
【发布时间】:2011-06-23 03:10:51
【问题描述】:

我有一个 WCF 服务,我希望客户端能够使用 Visual Studio 的“添加服务引用”功能进行引用。他们已经能够识别元数据端点,接口、方法和数据类型出现在“添加服务引用”对话框中,并且似乎可以顺利生成代理 - 但是在查看生成的代码文件或查看类时在对象浏览器中,没有从 ServiceContract 生成的服务接口 - 只有 DataContracts 被表示。当我从命令行将 svcutil 指向同一端点 URL 时,生成的文件 确实 包含接口。

  • 服务本身已经在生产环境中使用了一段时间,并且似乎运行良好
  • 它使用自定义绑定,但另一个服务使用完全相同的绑定配置(和其他配置设置),似乎可以正常使用添加服务参考
  • 不同的一点是该服务使用自定义行为(从 IServiceBehavior 派生的属性)。该接口也位于与具体服务类型不同的程序集中,但数据协定也是如此。

更新: 似乎是什么导致了这个问题,我不知何故忽略了这个接口上的一些方法有FaultContracts,这些FaultContracts引用的异常类型是[Serializable],而不是[DataContract](因为我认为任何从 Exception 派生的东西都必须是)。异常类型本身在生成的代码中表示,但它的公共属性不是(在 svcutil 或 ASR 生成的代码中)

【问题讨论】:

  • 作为测试,尝试消除这些差异,看看问题是否仍然存在。
  • 我应该在问之前尝试过,但你让我感到羞耻。添加服务引用仍然没有为服务接口生成代码。

标签: wcf svcutil.exe


【解决方案1】:

似乎是什么导致了这个问题,我不知何故忽略了这个接口上的一些方法有 FaultContracts,这些 FaultContracts 引用的异常类型是 [Serializable],而不是 [DataContract] (因为我认为任何源自 Exception 的东西都必须如此)。异常类型本身在生成的代码中表示,但它的公共属性不是(在 svcutil 或 ASR 生成的代码中)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    相关资源
    最近更新 更多