向ASP中添加服务引用.. NET Web API服务

本文关键字:服务 NET Web API 引用 添加 ASP | 更新日期: 2023-09-27 18:02:12

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

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

向ASP中添加服务引用.. NET Web API服务

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

我们没有任何标准机制来做到这一点。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的自动帮助页面功能进行复制/粘贴。

不是直接的,而是从我看到的几个示例中可以看出,使用Web Api涉及到设置ServiceContract。似乎如果您使用常规的OperationContract添加第二个服务契约接口;然后,您可以使用您选择的标准WCF绑定及其匹配的MEX端点创建端点。该服务将实现这两个接口,以便添加服务引用可以从标准WCF端点获取WSDL文档。