2014-08-27 205 views
4

我越來越想訪問我的Web API動作之一時,未找到404錯誤:的Web API路由找不到404

我有我的WebAPIConfig:

config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{action}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
); 

我有一個控制器命名爲OnSourceAPIController和GET操作ValidateServiceRequestAuto。

我得到一個404錯誤,當我嘗試去:

http://localhost/api/OnSourceAPI/ValidateServiceRequestAuto 

我的第一個猜測是我有某種路由錯誤的,但我創建了一個MVC控制器和索引頁,並能通過這個路由(api/controller/action)正常瀏覽。內置api /幫助頁甚至顯示/ api/OnSourceAPI/ValidateServiceRequestAuto作爲我的api調用的路由。

我也試過使用WebAPIRouteDebugger工具。它給了我000 404未找到錯誤,當我使用

http://localhost/api/OnSourceAPI/ValidateServiceRequestAuto 

,但實際上給我正常的路由信息​​,如果我把本地主機關閉前的,只是使用

api/OnSourceAPI/ValidateServiceRequestAuto as the URL... 

任何指針會讚賞。

回答

6

我覺得現在感覺有點傻了。

我有我的webapi項目在我的普通網站項目中運行,路徑爲.../api,因此我將api路由設置爲api/controller/action,我真的需要使用的路徑是localhost/api/api /控制器/操作。所以事實證明,404在那裏,因爲它真的找不到那個地方的任何東西。當電腦完全按照你的意思去做時,我討厭它。

+0

我沒有完全相同的問題,但是這讓我看着辦吧出。我從WebClient類調用服務,並且我的BaseAddress在最後缺少'/'。所以我認爲這可能是調用localhost/apiapi/controller/action。 – bcwhims 2015-01-13 16:00:10

+0

我剛剛有完全相同的問題,也感覺有點傻!謝謝你分享你的問題,我不知道我會一直追着多久,否則 – Michael12345 2015-03-12 17:54:50

+0

你確定你需要URL的'action'部分嗎? Web API意味着您將HTTP動詞映射到控制器(ApiController的)中具有相同名稱的動作。 – 2016-03-24 23:02:54