我需要在不同名稱空間中具有相同名稱的控制器。 時遇到的控制器:具有不同名稱空間的相同名稱的控制器ASP.NET WEB API
namespace BSB.Messages.Controllers.V1
{
public class MessagesController : ApiController {...}
}
namespace BSB.Messages.Controllers.V2
{
public class MessagesController : ApiController {...}
}
我試圖將其配置在啓動時。但仍然當我撥打電話時顯示錯誤:
發現多個類型與名爲'messages'的控制器相匹配。如果爲請求 ('api/{namespace}/{controller}/{action}/{id}')提供服務的路由找到多個 控制器,並且這些控制器使用相同的名稱但不同的名稱空間定義,則不支持
在WebApiConfig
我的註冊功能是:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultApi", "api/{namespace}/{controller}/{action}/{id}", new { id = UrlParameter.Optional });
}
我RegisterRoutes
功能是:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
var r = routes.MapRoute(
name: "Default",
url: "v1/messages/{action}/{id}",
defaults: new { id = UrlParameter.Optional },
namespaces: new[] { "BSB.Messages.Controllers.V1" }
);
r.DataTokens["Namespaces"] = new string[] { "BSB.Messages.Controllers.V1" };
var r1 = routes.MapRoute(
name: "V2",
url: "v2/messages/{action}/{id}",
defaults: new { id = UrlParameter.Optional },
namespaces: new[] { "BSB.Messages.Controllers.V2" }
);
r1.DataTokens["Namespaces"] = new string[] { "BSB.Messages.Controllers.V2" };
}
我打過電話從Global.asax中
兩個功能中的任何一個可以幫助我在這?我在這裏錯過了什麼?
謝謝,
普里亞
試試這個'無功R1 = routes.MapRoute( 名稱: 「V2」, 網址: 「V2 /消息/ {}動作/(編號)」,違約 :新{控制器=」 v2「,id = UrlParameter.Optional}, namespaces:new [] {」BSB.Messages.Controllers.V2「} );' – 2016-03-11 05:49:50
該框架清楚地表明它不被支持。 – Nkosi 2016-03-27 20:27:32