我的WebApiConfig.cs只包含这一条路线:
config.Routes.MapHttpRoute(
name: "Calendar",
routeTemplate: "api/Calendar/{date}",
defaults: new { controller = "Calendar", action = "Get", date = RouteParameter.Optional }
);
我的CalendarController类只有这个方法:
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。
如果有这么多隐藏的魔法,我可以对一个简单的例子进行微调,而不会一切都崩溃。
答案 0 :(得分:1)
您的路线将dateStr参数标记为可选,但方法签名不是。尝试在dateStr参数中添加默认值:
public IEnumerable<FVEvent> Get(string dateStr = "")
{
return db.Events.ToList();
}
答案 1 :(得分:0)
确保日历控制器的名称以Controller
结尾。还可以在WebAPI配置中使用以下代码来删除XML格式化程序。
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);