在我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