Potrzebuję kontrolerów o tej samej nazwie w różnych obszarach nazw. Sterowniki mam to:Kontrolery o tej samej nazwie w innym NameSpace ASP.NET WEB API
namespace BSB.Messages.Controllers.V1
{
public class MessagesController : ApiController {...}
}
namespace BSB.Messages.Controllers.V2
{
public class MessagesController : ApiController {...}
}
próbowałem skonfigurować go w rozruchu. Ale wciąż, gdy dzwonię, pokazuje błąd, który:
Znaleziono wiele typów pasujących do kontrolera o nazwie "messages". Może się to zdarzyć, jeśli trasa obsługująca to żądanie ("api/{namespace}/{controller}/{action}/{id}") wykryła wiele kontrolerów zdefiniowanych z tą samą nazwą, ale różniących się obszarami nazw, które nie są obsługiwane przez
Moja funkcja Rejestracja w WebApiConfig
jest:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultApi", "api/{namespace}/{controller}/{action}/{id}", new { id = UrlParameter.Optional });
}
Moja RegisterRoutes
funkcja:
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" };
}
Zadzwoniłem obie funkcje z Global.asax
Może ktoś mi pomóc w tym? Co tu przeoczyłem?
Dzięki,
Priya
spróbować 'var R1 = routes.MapRoute ( nazwa: "V2", url: "v2/Wiadomości/{action}/{id}", domyślnie: new {controller =” v2 ", id = UrlParameter.Optional}, namespaces: new [] {" BSB.Messages.Controllers.V2 "} );' –
Framework wyraźnie stwierdza, że nie jest obsługiwany. – Nkosi