2012-06-04 43 views
2

我已經創建了以下項目Visual Studio 2010中不能訪問的WebAPI項目

前端是一個mvc4 Web應用程序和MyWebAPI是mvc4的WebAPI

enter image description here

我希望能夠解決從我的FrontEnd項目訪問MyWebAPI控制方法。但它不起作用,因爲它只是抱怨當我運行webAPI網址時無法找到數據。

我是否必須做更多的事情才能讓我的FrontEnd與MyWebAPI交談?

例如,我只是簡單地試圖運行這個預先生成的WebAPI控制方法

public string Get(int id) 
{ 
    return "value"; 
} 

它不能被發現。但是,如果我將啓動項目更改爲MyWebAPI,那麼它就可以工作。所以我的問題是如何讓它可以從我的FrontEnd項目訪問MyWebAPI?

這個問題,因爲這實際上one相同,但它並不能解釋我如何可以從前端訪問的WebAPI時,它們是相同的解決方案中

編輯

$(document).ready(function() { 
      $("#clickMe").click(function() { 
       var id = $("#dataBox").val(); 
       $.ajax({ 
        url: "http://localhost:11982/api/Movie/GetMovie", 
        data: { id: id }, 
        type: "get", 
        contentType: "application/json;charset=utf-8", 
        success: function(data) { 
         alert(data); 
        }, 
        error: function(jqXHR, status, errorThrown) { 
//      alert("Error " + status + "\nError Thrown" + errorThrown + "\n" + jqXHR) 

        } 
       }) 
      }) 
     }) 

已更新2012-08-30

我更新了我的解決方案中的不同軟件包,其中包括WebAPI rc版本的WebAPI beta。現在由於某種原因,當我向任何WebAPI控制器發送表單請求或ajax請求時,它將針對表單請求響應說沒有找到這樣的控制器,並且對於ajax請求,它將永久加載而不返回響應。

以前遇到過類似問題的人嗎?

以前的解決方案是在本地IIS服務器上運行我的FrontEnd和MyWebAPI。但是,自從我更新所有軟件包後,它就停止工作了。

回答

2

似乎您的問題是您需要同時從Visual Studio運行FrontEnd & MyWebAPI項目。實際上,使用解決方案的啓動選項稍微難以配置Visual Studio來執行此操作。

右鍵單擊解決方案資源管理器窗格中的解決方案節點(不是具有相同名稱的項目節點)。從上下文菜單項中,選擇「設置啓動項目」。在對話框中,單擊「Multiple Startup Project」選項並選擇FrontEnd & MyWebAPI項目。點擊OK保存選項。現在兩個項目都應該在運行調試器時啓動,並且MyWebAPI調用將響應FrontEnd。只要確保兩個項目都在不同的端口上運行。

更新:

有打破在Web API RTM變化。其中一個變化是用於提取ApiController動作參數的約定。看看如何使用新的屬性FromUriFromBodyin this SO question and answer

+0

我現在試過了,它仍然不起作用。他們在不同的港口,但同樣的問題依然存在。我可以從該項目的視圖中訪問webAPI。但通過使用我的前端的意見,我不能。我添加了我用來獲取數據的腳本 – starcorn

+0

這種行爲聽起來更像是路由配置的問題。爲了排除故障,如果您的計算機上安裝了IIS或IIS Express,則可以將這兩個項目作爲單獨的網站運行。在項目屬性選項卡中(雙擊項目中的「屬性」節點),選擇Web選項卡。選擇「使用本地IIS Web服務器」並輸入網站根目錄的名稱。 Visual Studio將爲您創建IIS中的網站。創建後分別測試每個網站。如果可行,你應該可以使用網站URL從FrontEnd調用MyWebAPI URL。 –

+0

感謝它現在的作品!我更改了兩個項目的Web屬性,因此它使用IIS代替開發服務器。 – starcorn

相關問題