.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();
希望对您有所帮助。
我继承了一个网络 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();
希望对您有所帮助。