添加对ASP.NET Web API服务的服务引用

时间:2011-07-13 14:56:34

标签: c# wcf asp.net-web-api proxy-classes

我有一个MVC解决方案,它为Web API服务提供了一些路由。在某些情况下,我将使用简单的HTTP get从JavaScript中调用它们。在其他方面,我想从一些.NET代码中调用它们,也许是另一个MVC应用程序。

有没有办法为这些Web API端点添加服务引用,并让工具创建代理客户端和CLR类型,就像使用典型的WCF服务一样?我知道这里没有SOAP,但我确实读过它是可能的,而不是如何。

3 个答案:

答案 0 :(得分:18)

不,它是REST服务。 REST服务不公开用于按服务引用创建代理的元数据(具有某种特殊形式的元数据的WCF数据服务除外)。使用Web-API的HttpClient类来调用服务。

答案 1 :(得分:8)

我们没有任何标准机制来做到这一点。 REST是关于构建使客户端独立于服务器发展的系统。 HTTP定义了GET,PUT,POST,DELETE等的统一接口,因此不需要方法描述。由于这两个原因,没有REST WSDL等价物,或者我应该说没有在REST社区中真正获得动力的等价物(即有WADL)。

REST服务中的耦合点实际上是媒体类型/正文格式。为此,我们支持强类型机制。在Web API中,我们发布了一个HttpClient(Nuget上的HttpClient),它允许您采用CLR类型并转换为某种表示形式。开箱即用它支持XML和JSON。

因此,您可以创建CLR类型并与客户端共享,然后在客户端上使用HttpClient。

要创建类型本身,还有几个选项。

  1. 手动创建
  2. 使用“粘贴为Xml”工具并使用web api的自动帮助页面功能进行复制/粘贴。

答案 2 :(得分:1)

不是直接但是从我见过的少数样本中,使用Web Api涉及设置ServiceContract。似乎如果你添加第二个服务合同接口与常规OperationContract&根据需要使用DataContract属性,您可以使用您选择的标准WCF绑定及其匹配的MEX端点创建端点。该服务将实现两个接口,因此添加服务引用可以从标准WCF端点获取WSDL文档。