从Web APIurl中删除“api”前缀

我有一个API控制器

public class MyController : ApiController { ... } 

默认情况下,它映射到URL mysite/api/My/Method ,我希望它没有“api”前缀的URL: mysite/My/Method

设置控制器属性[RoutePrefix("")]对我没有帮助。

有没有其他方法可以实现这一目标?

默认注册通常在WebApiConfig找到,并且往往看起来像这样

 public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Attribute routing. config.MapHttpAttributeRoutes(); // Convention-based routing. config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } 

您需要在基于约定的设置中编辑routeTemplate

 public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Attribute routing. config.MapHttpAttributeRoutes(); // Convention-based routing. config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } 

请注意,如果此项目与MVC共享,则api前缀的原因是为了避免两个框架之间的路由冲突。 如果Web API是唯一使用的东西,那么应该没有问题。