【问题标题】:WCF WebAPI client does not know about server typesWCF WebAPI 客户端不知道服务器类型
【发布时间】:2011-12-28 05:07:23
【问题描述】:

我正在关注 .6 版本的 WCF Web API chm 文件。我已经建立了我的服务,当我通过 IE 访问它时一切正常。但是当我创建我的控制台应用程序时,我不明白客户端如何知道“联系人”类型。当然我可以添加参考,但是世界上的其他客户怎么会知道这些类型?

List<Contact> contacts = resp.Content.ReadAs<List<Contact>>();

客户如何知道 Contact 类的更改?谢谢。

【问题讨论】:

    标签: wcf wcf-web-api


    【解决方案1】:

    使用基于 SOAP 的 WCF 绑定,客户端通常会在 WSDL 之外生成一个客户端,该客户端会指定这些自定义类型。

    然而据我所知,在基于 REST 的 Web API 世界中,没有这样做的工具。预计制作客户端的第 3 方客户/程序员会以其他形式获得数据契约,并制作兼容的类。

    换句话说,实际上并没有一种自动的方式来做到这一点。

    【讨论】:

      【解决方案2】:

      客户端类型上与响应类型中的属性(名称/类型)匹配的每个属性都由 ReadAs 映射。

      如果您的响应类型和客户端类型上有一个字符串属性“名称”,则它的值正在被解析。

      您不需要参考。

      更新:如果您不想在客户端使用联系人类型,您可以尝试以下操作:

      var json = JsonValue.Parse(response.Content.ReadAsStringAsync().Result);
      

      如果您在服务器端的联系人类型具有“姓名”属性,您应该能够执行以下操作:

      var name = json["Name"];
      

      (假设您的响应是单个联系人 - 如果 List “json” 将是 JsonArray 类型 - 您应该得到一个线索...here 是一个示例,显示了 JsonValue 和 JsonArray 的用法)。

      关于“联系人类型更改”请阅读this

      【讨论】:

      • 我不明白客户如何知道“联系人”类型。所以我仍然需要在我的客户端应用程序中定义一个 Contact 类对吗?
      • 感谢亚历山大的帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多