我向我的 MVC 项目添加了一个 Api Controller 。并进行了以下更改:
我的 WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "GetFirms",
routeTemplate: "api/B2bApi/GetFirms",
defaults: new { controller = "B2bApiController", action= "GetFirms" });
}
}
我在 Global.asax 中注册这条路由(最后一行)
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
我检查了调试,发现我的路由已注册。所以这是我的 Controller :
public class B2bApiController : ApiController
{
[HttpGet]
public string GetFirms()
{
return "test";
}
}
当我导航到
/api/B2bApi/GetFirms
我得到了
404 error
.
注册api路由的正确方法是什么?
最佳答案
如果asp.net-mvc-4
WebApiConfig.Register(GlobalConfiguration.Configuration);
如果 asp.net-mvc-5 和 asp.net-web-api-2
GlobalConfiguration.Configure(WebApiConfig.Register);
必须放在上面
RouteConfig.RegisterRoutes(RouteTable.Routes);
例子:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
//GlobalConfiguration.Configure(WebApiConfig.Register); // use if mvc5
WebApiConfig.Register(GlobalConfiguration.Configuration); // use if mvc4
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
关于c# - 使用 MVC 项目注册 Api Controller 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37184272/