Routing .net Web Api路由不受尊重
我继承了一个web api项目。它是v2.1,但现在已升级到v2.2 但是,当我尝试将属性路由添加到控制器时,它是不受尊重的 我创建了一个新的API控制器,如下所示Routing .net Web Api路由不受尊重,routing,asp.net-web-api2,Routing,Asp.net Web Api2,我继承了一个web api项目。它是v2.1,但现在已升级到v2.2 但是,当我尝试将属性路由添加到控制器时,它是不受尊重的 我创建了一个新的API控制器,如下所示 public class MyController : ApiController { [Route("test")] public int TestInt() { return 42; } } 我的路线是这样的 config.Routes.MapHttpRoute(
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>
未找到与请求URI名称匹配的HTTP资源https://localhost:446/test'.
未找到与名为“test”的控制器匹配的类型。
尝试了各种路线组合,但似乎没有任何效果
我在另一个项目中尝试了完全相同的方法,效果很好
因此,我认为在这个项目中有某种东西阻止了路由的工作
有什么想法吗?我认为您应该在控制器上添加RoutePrefix属性:
[RoutePrefix("test")]
public class MyController : ApiController
{
[Route("")]
public int TestInt()
{
return 42;
}
}
此外,您还应在WebApiConfig中添加下一行:
config.Routes.MapHttpAttributeRoutes();
我希望这会有所帮助。谢谢-我错过了webapiconfig设置,我还需要一个[HttpGet]来执行操作-没有它似乎无法工作路由前缀不是必需的,顺便说一句。但无论如何,这是个好主意