Ho bisogno di avere controller con lo stesso nome in namespace diversi. I controllori Sto avendo sono:Controller con lo stesso nome in diversi NameSpace API Web ASP.NET
namespace BSB.Messages.Controllers.V1
{
public class MessagesController : ApiController {...}
}
namespace BSB.Messages.Controllers.V2
{
public class MessagesController : ApiController {...}
}
Ho provato a configurare in start up. Ma ancora quando faccio una chiamata mostra errore:
Sono stati trovati più tipi che corrispondono al controller denominato "messaggi". Questo può accadere se la route che fornisce questa richiesta ('api/{namespace}/{controller}/{action}/{id}') ha trovato più controller definiti con lo stesso nome ma spazi dei nomi differenti, che non è supportato
La mia funzione Register in WebApiConfig
è:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultApi", "api/{namespace}/{controller}/{action}/{id}", new { id = UrlParameter.Optional });
}
La mia funzione è 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" };
}
ho chiamato entrambe le funzioni da Global.asax
Uno può aiutarmi in questo? Cosa mi sono perso qui?
Grazie,
Priya
provare questo 'var r1 = routes.MapRoute ( nome: "V2", url: "/ messaggi/{action} v2/{id}", default: new {regolatore =" v2 ", id = UrlParameter.Optional}, namespace: new [] {" BSB.Messages.Controllers.V2 "} );' –
Il framework afferma chiaramente che non è supportato. – Nkosi