【问题标题】:WCF WSDL does not expose required classesWCF WSDL 不公开所需的类
【发布时间】:2014-08-28 13:29:24
【问题描述】:

我正在将 asmx Web 服务升级到 WCF。 asmx wsdl 公开了客户端所需的某些类。这些类不在 Web 方法本身中被引用,但它们在 Web 方法中的类中被引用。例如:

WebMethod1(Class1 param)
{
     return Class 2;
}

Class1 和 Class 2 包含在 wsdl 中,但在 Class1 或 Class 2 中引用的任何类都不包含在 WCF 的 WSDL 中。但是,它们位于 asmx WSDL 中。

有什么方法可以在不更改类本身或 Web 服务中的代码的情况下公开这些必需的类?我知道您可以将 [DataContract] 等添加到类中,但我很难相信 WCF 在这方面不应该提供与 asmx 相同的功能。

谢谢

【问题讨论】:

    标签: c# web-services wcf wsdl


    【解决方案1】:

    不需要 DataContract 不是 asmx 的强大之处,或者需要 DataContract 也不是 WCF 的弱点。这是由 WCF 设计的,原因有很多,其中之一是您应该向外界发布最少的信息。对于大型 Web 服务项目,这是一种祝福,而不是限制。客户不希望看到您的服务类的详细信息。

    服务数据类通过 WSDL 发布,以便在满足这些条件时成为客户端的代理类:

    1. 类由 DataContractAttribute 修饰,只有由 DataMemberAttribute 修饰的属性/数据字段才会被发布。复合结构中的嵌套类也需要这样的修饰。
    2. 该类在服务合同的至少一个操作合同中被引用。

    【讨论】:

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