2017-02-23 64 views
1

我已經使用ASP.NET核心Web應用程序(.NET Framework)創建了一個項目。我的項目結構:嘗試點擊WebAPI控制器方法時獲取404

Project Structure

我的價值觀控制器從MVC控制器繼承。當我點擊http://localhost:20798/api/values時,我確實得到了期望的迴應。 Values Controller

我加了ConsumerScore控制器,這次是從ApiController繼承的WebAPI控制器。但是現在當我點擊http://localhost:20798/api/consumerscore時,我得到了404響應。 Error Response

ConsumerScore控制器看起來像: ConsumerScore controller

如何解決這個問題?

+0

爲什麼當你試圖訪問'默認'的方式時,你有一個ConsumerScoreController的特殊路由? – NicoRiff

+0

@NicoRiff早些時候,我沒有它,我稍後添加它,認爲它會解決這個錯誤。但沒有運氣! – Sameer

+0

該代碼是混合asp.net-mvc5和asp.net-core – Nkosi

回答

1

錯誤是與「ApiController」你應該只使用控制器在你的實現。

因爲MVC和WebAPI已經在ASP.NET Core中合併了,所以確實有特定的ApiController類。但是,MVC的Controller類引入了一些您在開發Web API時可能不需要的功能,例如視圖和模型綁定。

更多請見:Is ApiController deprecated in .NET CORE?

+1

雖然你的答案是100%正確的,但如果該鏈接被移動,更改,合併到另一個或主站點 ,它也可能成爲100%無用 只是消失... **: - (**因此,請[編輯]您的答案,並將 鏈接中的相關步驟複製到您的答案中,從而保證您的答案爲本網站整個生命週期的100%! *; - )**您可以隨時 將您的答案的底部的鏈接作爲您的 材料的來源... –

+1

謝謝,@Paulo我認爲ASP.NET核心項目不應該給出2個選擇,而添加控制器。 – Sameer

0

好像你混淆了「MVC」,「網絡API」的想法。

ASP.net MVC用於提供網頁,而Web API應該以可協商的方式(json/xml/...)向http請求提供數據。

向MVC路由添加「api/*」並從MVC Controller提供數據並不是最好的主意,並且不會將其變爲有用的Web服務。

從你的方法看,我想你需要的是一個ApiController,但是你不能通過將「〜/ api/*」複製到你的web瀏覽器來創建http請求,你需要使用像fiddler這樣的工具或者你的瀏覽器的調試器。