C# 约束条目';内边界HttpMethod';必须具有字符串值或类型实现';IHttpRouteConstraint
我试图实现属性路由,但得到以下错误 带有route的route上的约束条目“inboundHttpMethod” 模板“authenticate”必须具有字符串值或其类型 实现“IHttpRouteConstraint” 我已经在Global.asax中添加了代码行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
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项目中的博客。现在工作正常了,我删除了所有外部包和代码。