WebAPI中的属性路由:无法找到资源

时间:2013-11-14 22:57:38

标签: asp.net-mvc-4 asp.net-web-api asp.net-mvc-5 attributerouting

带有WebAPI端点的ASP.NET MVC4项目。我正在尝试为MVC控制器和API控制器配置AR。我添加了以下内容:

enter image description here

现在我在App_Start中看到另外两个文件:AttributeRoutingConfig和AttributeRoutingHttpConfig。

第一个有这个:

[assembly: WebActivator.PreApplicationStartMethod(typeof(AttributeRoutingConfig), "Start")]

public static class AttributeRoutingConfig
{
    public static void RegisterRoutes(RouteCollection routes) 
    {       
        GlobalConfiguration.Configuration.Routes.MapHttpAttributeRoutes();
    }
    public static void Start() 
    {
        RegisterRoutes(RouteTable.Routes);
    }
}

第二个有这个:

[assembly: WebActivator.PreApplicationStartMethod(typeof(AttributeRoutingHttpConfig), "Start")]

public static class AttributeRoutingHttpConfig
{
    public static void RegisterRoutes(HttpRouteCollection routes) 
    {    
        routes.MapHttpAttributeRoutes();
    }
    public static void Start() 
    {
        RegisterRoutes(GlobalConfiguration.Configuration.Routes);
    }
}

在我的GlobalConfig中我有这个:

 GlobalConfiguration.Configure(WebApiConfig.Register);

在我的WebApiConfig中,我有:

 config.MapHttpAttributeRoutes();

我尝试POST到装有[POST(“api / message”)“的路线时出现的错误:

The constraint entry 'inboundHttpMethod' on the route with route template 'api/message' must have a string value or be of a type which implements 'IHttpRouteConstraint'.

在我的Global.asax中:

        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在尝试结合Tim McCall的软件包+ Web API 2的内置属性路由功能。不要将软件包安装为已在Web API 2版本中构建的软件包。

请检查:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2