簡體   English   中英

將服務引用添加到 ASP.NET Web API 服務

[英]Add service reference to ASP.NET Web API service

我有一個 MVC 解決方案,它為 Web API 服務提供了一些路由。 在某些情況下,我會從 JavaScript 調用這些,並使用簡單的 HTTP 獲取。 在其他情況下,我想從一些 .NET 代碼中調用它們,也許是另一個 MVC 應用程序。

有沒有辦法向這些 Web API 端點添加服務引用,並讓工具像使用典型的 WCF 服務一樣創建代理客戶端和 CLR 類型? 我知道這里沒有涉及 SOAP 但我確實讀過它是可能的,只是不知道如何。

不,它是 REST 服務。 REST 服務不公開用於通過服務引用創建代理的元數據(WCF 數據服務除外,它具有某種特殊形式的元數據)。 使用 Web-API 的HttpClient class 調用該服務。

我們沒有任何標准機制來做到這一點。 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 和 DataContract 屬性的第二個服務合同接口,那么您可以使用您選擇的標准 WCF 綁定及其匹配的 MEX 端點創建一個端點。 該服務將實現這兩個接口,因此添加服務參考可以從標准 WCF 端點獲取 WSDL 文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM