Web Api呼叫没有达成行动?

时间:2016-05-28 15:11:04

标签: asp.net-web-api2

我的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动作,如下图所示:

enter image description here

发送请求时,我收到404 Not Found not found错误。我做错了什么?

1 个答案:

答案 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匹配。