Routing web api路由
我有以下网址: localhost/api/machine/somecode/all 我有以下控制器:Routing web api路由,routing,asp.net-mvc-4,asp.net-web-api,Routing,Asp.net Mvc 4,Asp.net Web Api,我有以下网址: localhost/api/machine/somecode/all 我有以下控制器: public class MachineController : ApiController { public IEnumerable<Machine> Get() { return new List<Machine> { new Machine
public class MachineController : ApiController
{
public IEnumerable<Machine> Get()
{
return new List<Machine>
{
new Machine
{
LastPlayed = DateTime.UtcNow,
MachineAlertCount = 1,
MachineId = "122",
MachineName = "test",
MachinePosition = "12",
MachineStatus = "test"
}
};
}
public IEnumerable<Machine> All(string code)
{
return new List<Machine>
{
new Machine
{
LastPlayed = DateTime.UtcNow,
MachineAlertCount = 1,
MachineId = "122",
MachineName = "test",
MachinePosition = "12",
MachineStatus = "test"
}
};
}
}
但由于某些原因,它无法解决问题——有什么显而易见的原因吗?这行代码是从哪里来的
routeTemplate: "api/machine/{code}/all"
我认为这是一条失败的路线
您是否不需要默认设置:
设置
事实上,这不是默认的:
api/machine/all/{code}
你试过在Firefox上查看网络标签吗?这将告诉你它试图去的路线。是的,通过使用方法名,你推断出一个动作,你还需要指出要匹配的控制器,这样可能会起作用:
config.Routes.MapHttpRoute(
name: "MachineApi",
routeTemplate: "api/machine/{code}/all",
defaults: new { Action = "All", Controller = "Machine" }
);
您好-谢谢您-不幸的是,URL是由一个遗留服务设置的:\hi。很公平,但我的第一部分应该允许你的其他方法工作。更新以删除通知。
config.Routes.MapHttpRoute(
name: "MachineApi",
routeTemplate: "api/machine/{code}/all",
defaults: new { Action = "All", Controller = "Machine" }
);