Skip to main content
 首页 » 编程设计

c#之无法在 MVC 项目中访问 Web API 2 Controller

2024年02月25日40wayfarer

我无法使用我在 MVC 项目中使用 ASP.Net Web API 2 Controller 编写的 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 路由需要在标准 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);         
    } 
}