2012-07-10 165 views
2

我正在爲我們的服務創建一個Asp.net Webapi。另一方面,我必須從現有的WCF服務中提取一些數據。從Asp.net消費WCF服務WebApi

我在我的asp.net webapi項目中創建了一個web引用。但似乎沒有生成代理。

我嘗試過VS 2012 RC,然後VS VS 2010.我無法從我的模型/控制器在項目中的任何位置引用它。是否有不同的方式在MVC webapi中創建代理。我不知道什麼是錯的。

它必須做像我不能消耗從靜止服務

WCF服務是什麼,我很想念這裏的東西。

謝謝。

回答

1

嘗試添加服務引用而不是Web參考(用於不推薦使用的ASP.NET Web服務(ASMX))。

我剛試過這個,它按預期工作。這是我做的:

  1. 創建一個新的ASP.NET MVC 4 Web應用程序並選擇Web API項目模板。
  2. 向解決方案添加了WCF服務應用程序項目。請記住,在爲其添加服務引用之前構建它。
  3. 在Web APi項目中,我添加了對WCF服務的服務引用。
  4. public string Get(int id) 
    { 
        var serviceReference1 = new ServiceReference1.Service1Client(); 
        return serviceReference1.GetData(id); 
    } 
    

替換ValuesController.Get(INT ID)的代碼在瀏覽

http://localhost:<port>/api/values/2 

我收到

<?xml version="1.0" encoding="utf-8"?><string>You entered: 2</string> 
+0

我在我的Asp.net WebApi項目中添加了一個服務引用,但是我不能在項目的任何部分引用它。這是非常奇怪的行爲。我懷疑歸咎於WSDL代,因爲我可以在其他項目中引用Service來加速這個WebApi項目。 – Tabish 2012-07-11 14:33:49

+0

「添加服務引用」完成沒有錯誤?新創建的服務引用是否出現在解決方案資源管理器中的服務引用文件夾下? – Martin4ndersen 2012-07-12 17:45:28

+1

是的,它確實發生。即使我可以更新服務。我觀察到web.config中沒有記錄,就像我們從客戶端使用WCF服務時那樣。我無法在我的模式或控制器中訪問它。我試着在對象瀏覽器中查看它..不能在那裏看到它。 – Tabish 2012-07-12 19:16:57

1

如果添加服務引用但reference.cs是空的,然後它生成可能是類型衝突的問題。以下解決方法爲我工作。

要糾正它,請右鍵單擊服務引用,然後單擊配置服務引用。在配置屏幕上,取消選擇「引用程序集中的重用類型」。它應該自動更新服務引用,如果沒有強制更新。

這應該適當地生成reference.cs文件。