无法在 MVC 项目中访问 Web API 2 控制器
Unable to hit Web API 2 controller in MVC Project
我无法点击我使用 ASP.Net Web API 2 控制器在 MVC 项目中编写的 API。
localhost:57323/api/billpayment/getbillers/10
有效,但 localhost:57323/api/billpayment/getbillers
无效。
WebAPI.config
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Global.asax
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
由于路由的配置方式,您遇到了路由冲突。
Web API 路由需要添加到路由 table 之前,标准 MVC 路由。
更新
public class MvcApplication : System.Web.HttpApplication {
protected void Application_Start() {
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register); //<-- This MUST come before
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes); //<-- THIS to avoid conflicts
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
我无法点击我使用 ASP.Net Web API 2 控制器在 MVC 项目中编写的 API。
localhost:57323/api/billpayment/getbillers/10
有效,但 localhost:57323/api/billpayment/getbillers
无效。
WebAPI.config
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Global.asax
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
由于路由的配置方式,您遇到了路由冲突。
Web API 路由需要添加到路由 table 之前,标准 MVC 路由。
更新
public class MvcApplication : System.Web.HttpApplication {
protected void Application_Start() {
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register); //<-- This MUST come before
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes); //<-- THIS to avoid conflicts
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}