Web Api Route 注册要放在 Mvc Route 注册前
2020-11-20 22:09
标签:style blog class code java color 今天想研究一下Web Api,写了一个测试Api,打开网站后浏览一下,可是却提示找不到方法,刚开始以为哪里配置错了,可找了半天也没见。 因为我是在一个现有Mvc站点做的Demo,所以打算新建一个Mvc网站,再试一下,新站点是正常的,对比一下Global文件,发现WebApiConfig和RouteConfig顺序不一样。 如果把新站点的RouteConfig也放在WebApiConfig之前,同样提示找不到方法。看来这两个配置有关联呀。 看了一下GlobalConfiguration类就明白了 合并后的类似路由: 如果顺序反了,DefaultApi的路由就永远匹配不到了,会一直找MVC的路由"{api}/{action}/{id}"。 Web Api Route 注册要放在 Mvc Route 注册前,搜素材,soscw.com Web Api Route 注册要放在 Mvc Route 注册前 标签:style blog class code java color 原文地址:http://www.cnblogs.com/lizhanglong/p/3710567.html
WebApiConfig.Register(GlobalConfiguration.Configuration);RouteConfig.RegisterRoutes(RouteTable.Routes);
public
static class GlobalConfiguration
{ private
static Lazynew
Lazydelegate
{
HttpConfiguration configuration = new
HttpConfiguration(new
HostedHttpRouteCollection(RouteTable.Routes));
configuration.Services.Replace(typeof(IAssembliesResolver), new
WebHostAssembliesResolver());
configuration.Services.Replace(typeof(IHttpControllerTypeResolver), new
WebHostHttpControllerTypeResolver());
configuration.Services.Replace(typeof(IHostBufferPolicySelector), new
WebHostBufferPolicySelector());
return
configuration;
});
public
static HttpConfiguration Configuration
{
get
{
return
_configuration.Value;
}
}
//...
}
public
class RouteConfig
{
public
static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "t/{controller}/{action}/{id}",
defaults: new
{ controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
public
static class WebApiConfig
{
public
static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new
{ id = RouteParameter.Optional }
);
}
}

1 routes.MapHttpRoute(
2 name: "DefaultApi",
3 routeTemplate: "api/{controller}/{id}",
4 defaults: new { id = RouteParameter.Optional }
5 );
6 routes.MapRoute(
7 name: "Default",
8 url: "{controller}/{action}/{id}",
9 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
10 );

上一篇:panel内嵌程序窗体
下一篇:python之socket模块
文章标题:Web Api Route 注册要放在 Mvc Route 注册前
文章链接:http://soscw.com/index.php/essay/22033.html