在我TestController
我有以下幾點:MVC網頁API路由的默認動作不靈
[HttpGet]
public IEnumerable<String> Active()
{
var result = new List<string> { "active1", "active2" };
return result;
}
[HttpGet]
public String Active(int id)
{
var result = new List<string> { "active1", "active2" };
return result[id];
}
在RouteConfig
的映射是:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "", id = RouteParameter.Optional });
在瀏覽器下面的請求的工作原理:
api/test/active/1
但是,這返回內部服務器錯誤:
api/test/active
那你必須做返回動作可能或maynot有一個參數,以類似的方式爲默認獲取?
更新1 作爲的Cuong樂建議,改變路線的順序的幫助下,該航線目前有:
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我不得不從ActionApi路線刪除action = ""
否則標準獲取的其他控制器停止工作(即api /值)
api/test/active現在正在解決,但我現在得到一個500內部服務器錯誤的/ api /測試是可以解決,所以API /測試將返回「所有「和/測試/主動只返回」一些「?
你會得到什麼樣的內部服務器錯誤的?多個行動被發現? – 2012-07-30 16:40:00
對不起,我不確定如何獲取更詳細的消息,我正在運行只是在Visual Studio中使用調試,是否有一個web.config設置或什麼可以得到一個更詳細的錯誤? – HadleyHope 2012-07-30 17:17:00
我還沒有嘗試調試BU我認爲你可以看到調試的詳細錯誤。您也可以在web.config上設置並使用過濾器查看拋出的錯誤。至於你的問題,我到目前爲止還沒有明確的答案:(。 –
2012-07-31 11:14:27