1

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

在此处输入图像描述

现在我在 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);

我究竟做错了什么?

4

1 回答 1

3

您正在尝试将 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

于 2013-11-14T23:14:20.290 回答