【发布时间】:2016-03-08 07:41:08
【问题描述】:
如何在 Web API 2 中使用两个相同的控制器。
我需要使用如下 URL。
mysite/api/Contacts/get/2
和
mysite/api/v1/Contacts/get/2
但如果我为此使用单独的文件夹,则会出现错误。
我的 WebApiConfig.cs 是这样的
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
这是错误
找到了多个与名为“default”的控制器匹配的类型。 如果服务此请求的路由会发生这种情况 ('api/v1/{controller}/{id}') 发现多个控制器定义为 名称相同但命名空间不同,不支持。这 对“默认”的请求已找到以下匹配的控制器: TestWebAPI.Controllers.DefaultController TestWebAPI.Controllers.v1.DefaultController
我怎样才能做到这一点?...基本上我需要这个来进行版本控制。
【问题讨论】:
-
您遇到了什么错误?
-
据我所知,您正在尝试访问此链接:
mysite/api/version1/Contacts/get/2但路线正在注册:mysite/api/v1/Contacts/get/2 -
我添加了错误
-
使用url重写?将非版本重写为版本特定的 URL。
标签: c# asp.net-web-api