C# 约束条目';内边界HttpMethod';必须具有字符串值或类型实现';IHttpRouteConstraint

C# 约束条目';内边界HttpMethod';必须具有字符串值或类型实现';IHttpRouteConstraint,c#,asp.net-web-api,asp.net-mvc-routing,C#,Asp.net Web Api,Asp.net Mvc Routing,我试图实现属性路由,但得到以下错误 带有route的route上的约束条目“inboundHttpMethod” 模板“authenticate”必须具有字符串值或其类型 实现“IHttpRouteConstraint” 我已经在Global.asax中添加了代码行 AttributeRoutingHttpConfig.RegisterRoutes(GlobalConfiguration.Configuration.Routes); 以及AttributeRoutingHttpConf

我试图实现属性路由,但得到以下错误

带有route的route上的约束条目“inboundHttpMethod” 模板“authenticate”必须具有字符串值或其类型 实现“IHttpRouteConstraint”

我已经在Global.asax中添加了代码行

    AttributeRoutingHttpConfig.RegisterRoutes(GlobalConfiguration.Configuration.Routes);
以及AttributeRoutingHttpConfig.cs中的以下代码

routes.MapHttpAttributeRoutes(cfig =>
            {
                cfig.UseLowercaseRoutes = true;
                cfig.AutoGenerateRouteNames = true;
                cfig.AddRoutesFromAssemblyOf<AuthenticateController>();
                cfig.InMemory = true;
            });
routes.maphttpAttribute路由(cfig=>
{
cfig.UseLowercaseRoutes=true;
cfig.AutoGenerateRouteNames=true;
cfig.AddRoutesFromAssemblyOf();
cfig.InMemory=true;
});

任何人都知道这个问题,实际上我是c#的新手。

您使用了错误的软件包

据我所知,您正在尝试使用(旧的,不再受支持的)实现属性路由

此包支持Web API v1(程序集版本4.*),而不支持Web API 2(程序集版本5.*)

Web API 2对属性路由的支持是本机的。本教程可帮助您实现以下功能:

这里是一个小例子:

[RoutePrefix("v1/myexample")]
public MyController : ApiController {
    [Route("foo")]
    public string GetFoo()
    {
        return "foo";
    }
}
可在以下端点处执行此操作:
http://myhost/v1/myexample/foo

请记住在
WebApiConfig.cs
文件中注册它们:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        // Other Web API configuration
    }
}

MapHttpAttribute路由
扩展方法没有您提供的签名。您确定使用的是正确的NuGet软件包(Web API 2)吗?是的,没有语法错误。正如我所说的,我不相信您使用的是Web API 2本机属性路由。请仔细检查您的NuGet软件包。你能添加你的
attributeroutighttpconfig.cs
文件的using语句吗?谢谢@Federico,我一直在关注某个人在WebAPI2项目中的博客。现在工作正常了,我删除了所有外部包和代码。