Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除“;空气污染指数;来自Web API url的前缀_C#_Asp.net_Asp.net Web Api_Asp.net Mvc Routing - Fatal编程技术网

C# 删除“;空气污染指数;来自Web API url的前缀

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

我有一个API控制器

public class MyController : ApiController { ... }
默认情况下,它被映射到URL
mysite/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/