我的WebApiConfig设置如下:
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中注册了以下路线:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
WebApiConfig.Register(GlobalConfiguration.Configuration);
}
我的Web api控制器类看起来像这样:
[RoutePrefix("api/upload")]
public class UploadController : ApiController
{
[HttpGet]
[Route("")]
public string Upload()
{
return "hello";
}
}
我正在调用fiddler中的Web Api动作,如下图所示:
发送请求时,我收到404 Not Found not found错误。我做错了什么?
答案 0 :(得分:2)
尝试在 MVC路由映射之前配置Web API :
protected void Application_Start()
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
我认为正在发生的是框架正试图将您的路线映射到MVC。假设此URI localhost:8170/api/upload
引用名为Api
的MVC控制器,其操作名为Upload
。
在MVC之前注册Web API路由将允许框架将以api/
开头的路由与正确的ApiController
匹配。