为什么VS“添加服务引用”不会为svcutil识别的servicecontracts生成接口?

时间:2011-02-08 00:21:02

标签: wcf svcutil.exe

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

  • 服务本身已经在生产中使用了一段时间,似乎工作正常
  • 它使用自定义绑定,但其他服务使用完全相同的绑定配置(和其他配置设置)似乎与添加服务引用一起正常工作
  • 不同的一点是此服务使用自定义行为(从IServiceBehavior派生的属性)。该接口也与具体服务类型不同,但数据合同也是如此。

更新 似乎导致问题的是我在某种程度上忽略的问题,即此接口上的某些方法存在FaultContracts,并且这些FaultContracts引用了一个异常类型,即[Serializable],而不是[DataContract](就像我一样)认为任何源自Exception的东西必须是)。异常类型本身在生成的代码中表示,但其公共属性不是(在svcutil或ASR生成的代码中)

1 个答案:

答案 0 :(得分:0)

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