为什么找不到路线的动作?
Why was no action found for route?
我的 WebApiConfig.cs 只包含这条路线:
config.Routes.MapHttpRoute(
name: "Calendar",
routeTemplate: "api/Calendar/{date}",
defaults: new { controller = "Calendar", action = "Get", date = RouteParameter.Optional }
);
而我的 CalendarController class 只有这个方法:
public IEnumerable<FVEvent> Get( string dateStr )
{
return db.Events.ToList();
}
但是当我尝试在浏览器中点击 /api/Calendar 时,我在 XML 中得到以下 MessageDetail:
No action was found on the controller 'Calendar' that matches the request.
另外我不知道为什么是 XML,我希望它是 JSON。
隐藏的魔法实在是太多了,我无法对一个简单的示例进行细微调整,否则一切都会崩溃。
确保您的日历控制器的名称以 Controller
结尾。还可以在 WebAPI 配置中使用以下代码删除 XML 格式化程序。
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
您的路由将 dateStr 参数标记为可选,但方法签名没有。尝试为您的 dateStr 参数添加一个默认值:
public IEnumerable<FVEvent> Get(string dateStr = "")
{
return db.Events.ToList();
}
我的 WebApiConfig.cs 只包含这条路线:
config.Routes.MapHttpRoute(
name: "Calendar",
routeTemplate: "api/Calendar/{date}",
defaults: new { controller = "Calendar", action = "Get", date = RouteParameter.Optional }
);
而我的 CalendarController class 只有这个方法:
public IEnumerable<FVEvent> Get( string dateStr )
{
return db.Events.ToList();
}
但是当我尝试在浏览器中点击 /api/Calendar 时,我在 XML 中得到以下 MessageDetail:
No action was found on the controller 'Calendar' that matches the request.
另外我不知道为什么是 XML,我希望它是 JSON。
隐藏的魔法实在是太多了,我无法对一个简单的示例进行细微调整,否则一切都会崩溃。
确保您的日历控制器的名称以 Controller
结尾。还可以在 WebAPI 配置中使用以下代码删除 XML 格式化程序。
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
您的路由将 dateStr 参数标记为可选,但方法签名没有。尝试为您的 dateStr 参数添加一个默认值:
public IEnumerable<FVEvent> Get(string dateStr = "")
{
return db.Events.ToList();
}