我有一个使用MVC和WebAPI2的Web应用程序。在匹配手动配置的MVC路由之前,我希望始终与WebAPI2属性路由匹配。我在致电configuration.MapHttpAttributeRoutes()
之前尝试过调用RouteConfig.RegisterRoutes(RouteTable.Routes)
,但这似乎不起作用。
有没有办法确保WebAPI2路由始终具有优先权?
答案 0 :(得分:0)
放手一搏。使用VS创建新控制器。确保它被称为someController,其中一些是控制器的名称,它必须以“Controller”结尾。确保你的类继承了ApiController ......
public class someController : ApiController
{
[Route("api/test/{name}"), HttpGet]
public string Router(string name)
{
return "Your name is: " + name;
}
}
还要在global.asax文件中添加它。
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //This will remove XML serialization and return everything in JSON.
GlobalConfiguration.Configuration.MapHttpAttributeRoutes();
GlobalConfiguration.Configuration.EnsureInitialized();
}
在上面,api路由正在等待HttpGet,你也可以使用HttpPost,并使用FormDataCollection来获取发布的表单数据。请注意如何使用{someparameter}
参数化API以上内容非常简单,API控制器可以序列化实现序列化的大多数对象。如果没有可以使用NewtonSoft或其他东西。