约束条目“inboundHttpMethod”必须具有字符串值或者是实现“IHttpRouteConstraint”的类型

Ind*_* KP 2 c# asp.net-mvc-routing asp.net-web-api

我正在尝试实现属性路由,但出现以下错误。

具有路由模板“authenticate”的路由上的约束条目“inboundHttpMethod”必须具有字符串值或者是实现“IHttpRouteConstraint”的类型

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

    AttributeRoutingHttpConfig.RegisterRoutes(GlobalConfiguration.Configuration.Routes);
Run Code Online (Sandbox Code Playgroud)

以及 AttributeRoutingHttpConfig.cs 中的以下代码,

routes.MapHttpAttributeRoutes(cfig =>
            {
                cfig.UseLowercaseRoutes = true;
                cfig.AutoGenerateRouteNames = true;
                cfig.AddRoutesFromAssemblyOf<AuthenticateController>();
                cfig.InMemory = true;
            });
Run Code Online (Sandbox Code Playgroud)

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

Fed*_*uma 5

您使用了错误的软件包。

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

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

Web API 2 对属性路由的支持是原生的。本教程可以帮助您实现这样的功能:Web API 2 中的属性路由

这是一个小例子:

[RoutePrefix("v1/myexample")]
public MyController : ApiController {
    [Route("foo")]
    public string GetFoo()
    {
        return "foo";
    }
}
Run Code Online (Sandbox Code Playgroud)

可以在以下端点达到此操作:http://myhost/v1/myexample/foo

请记住将它们注册到您的WebApiConfig.cs文件中:

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

        // Other Web API configuration
    }
}
Run Code Online (Sandbox Code Playgroud)