C# 删除“;空气污染指数;来自Web API url的前缀
我有一个API控制器C# 删除“;空气污染指数;来自Web API url的前缀,c#,asp.net,asp.net-web-api,asp.net-mvc-routing,C#,Asp.net,Asp.net Web Api,Asp.net Mvc Routing,我有一个API控制器 public class MyController : ApiController { ... } 默认情况下,它被映射到URLmysite/api/My/Method,我希望它的URL不带“api”前缀:mysite/My/Method 设置控制器属性[RoutePrefix(“”)]对我没有帮助 有没有其他方法可以实现这一点?默认注册通常在WebApiConfig中找到,并且看起来像这样 public static class WebApiConfig { p
public class MyController : ApiController { ... }
默认情况下,它被映射到URLmysite/api/My/Method
,我希望它的URL不带“api”前缀: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,那么应该没有问题。API
word是在WebApiConfig静态类的Register方法中配置的。您使用的是属性路由还是基于约定的路由?我只想提到默认AccountController有[RoutePrefix(“API/Account”)]
,因此,为了使它也适用于这个控制器,您还需要从这里删除api/
。