.net Web Api 路由不受尊重

.net Web Api routing not respected

我继承了一个网络 api 项目。它是 v2.1,但现在已升级到 v2.2

但是,当我尝试将属性路由添加到控制器时,却没有得到遵守

我创建了一个新的 API 控制器,看起来像这样

public class MyController : ApiController
{
    [Route("test")]
    public int TestInt()
    {
        return 42;
    }
}

我的路线是这样的

config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "{controller}/{id}",
        defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
);

但是当我点击 /test url 我得到这个

<Error>
<Message>
No HTTP resource was found that matches the request URI 'https://localhost:446/test'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'test'.
</MessageDetail>
</Error>

尝试过各种路线组合,但似乎没有任何效果

我在另一个项目中尝试过完全相同的方法,效果很好

所以我认为这个项目中有一些东西阻止了路由的工作

有什么想法吗?

我认为您应该在控制器上添加 RoutePrefix 属性:

[RoutePrefix("test")]
public class MyController : ApiController
{
    [Route("")]
    public int TestInt()
    {
        return 42;
    }
}

您还应该在 WebApiConfig 中添加下一行:

config.Routes.MapHttpAttributeRoutes();

希望对您有所帮助。