Ambiguous Controllers - Só acontece uma vez
02/07/2009
0
Galera, minha aplicação tem dois controles principais. A primeira vez q eu clico em links relacionados ao 1º controller, eu tenho o seguinte erro:
The controller name ´Home´ is ambiguous between the following types:
EsgRepublic.Payport.Mvc.Areas.Admin.Controllers.HomeController
EsgRepublic.Payport.Mvc.Controllers.HomeController
Aí se eu clicar de novo em qualquer um dos links ele já funciona 100¬
O engraçado é que isto só ocorre uma vez a cada limpeza & compilação (se eu só recompilar ele nao da erro). E também, se eu clicar em algum dos links do segundo controller, eu posso clicar nos do primeiro sem dar erro.
Meu Global.asax:
Os métodos Map...:
Valeu galera
The controller name ´Home´ is ambiguous between the following types:
EsgRepublic.Payport.Mvc.Areas.Admin.Controllers.HomeController
EsgRepublic.Payport.Mvc.Controllers.HomeController
Aí se eu clicar de novo em qualquer um dos links ele já funciona 100¬
O engraçado é que isto só ocorre uma vez a cada limpeza & compilação (se eu só recompilar ele nao da erro). E também, se eu clicar em algum dos links do segundo controller, eu posso clicar nos do primeiro sem dar erro.
Meu Global.asax:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(".axd/{*pathInfo}"); routes.MapLowerCaseAreasEmployees("//", "EsgRepublic.Payport.Mvc", new[] { "Employees" }); routes.MapLowerCaseAreasDefaultEmployees("/", "EsgRepublic.Payport.Mvc", new[] { "Employees" }); routes.MapLowerCaseAreas("//", "EsgRepublic.Payport.Mvc", new[] { "Admin" }); routes.MapLowerCaseRootArea("//", "EsgRepublic.Payport.Mvc", new { controller = "Home", action = "Index", id = "" }); }
Os métodos Map...:
public static void MapLowerCaseAreas(this RouteCollection routes, string url, string rootNamespace, string[] areas) { routes.MapLowerCaseAreas(url, rootNamespace, areas, new RouteValueDictionary(new { action = "Index", controller = "Home", id = "" })); } public static void MapLowerCaseAreas(this RouteCollection routes, string url, string rootNamespace, string[] areas, RouteValueDictionary defaults) { Array.ForEach(areas, area => { Route route = new LowercaseRoute("/" + url, new MvcRouteHandler()) { Constraints = new RouteValueDictionary(new { area }), Defaults = defaults }; string areaNamespace = rootNamespace + ".Areas." + area + ".Controllers"; route.DataTokens = new RouteValueDictionary(new { namespaces = new string[] { areaNamespace } }); routes.Add(route); }); } public static void MapLowerCaseAreasEmployees(this RouteCollection routes, string url, string rootNamespace, string[] areas) { Array.ForEach(areas, area => { Route route = new LowercaseRoute("/" + url, new MvcRouteHandler()) { Constraints = new RouteValueDictionary(new { area, controller="BankAccount|Home|W4Tax|I9Tax"}), Defaults = new RouteValueDictionary(new {action = "Index", id = "" }) }; string areaNamespace = rootNamespace + ".Areas." + area + ".Controllers"; route.DataTokens = new RouteValueDictionary(new { namespaces = areaNamespace }); routes.Add(route); }); } public static void MapLowerCaseAreasDefaultEmployees(this RouteCollection routes, string url, string rootNamespace, string[] areas) { Array.ForEach(areas, area => { Route route = new LowercaseRoute("/" + url, new MvcRouteHandler()) { Constraints = new RouteValueDictionary(new { area}), Defaults = new RouteValueDictionary(new { controller = "Employee",action = "Index", id = "" }) }; string areaNamespace = rootNamespace + ".Areas." + area + ".Controllers"; route.DataTokens = new RouteValueDictionary(new { namespaces = areaNamespace }); routes.Add(route); }); } public static void MapLowerCaseRootArea(this RouteCollection routes, string url, string rootNamespace, object defaults) { Route route = new LowercaseRoute(url, new MvcRouteHandler()) { Constraints = new RouteValueDictionary(new {controller="Home|", area="root|"}), Defaults = new RouteValueDictionary(new { area = "root", action = "Index", controller = "Home", id = "" }) }; route.DataTokens = new RouteValueDictionary(new { namespaces = new string[] { rootNamespace + ".Controllers" } }); // route.Defaults = new RouteValueDictionary(new { area = "root", action = "Index", controller = "Home", id = "" }); routes.Add(route); }
Valeu galera
Vegetalzis
Curtir tópico
+ 0
Responder
Posts
02/07/2009
Vegetalzis
Esqueci de informas quem são os controlers em questão.
EsgRepublic.Payport.Mvc.Areas.Employees.EmployeeController
Este é o controller problemático (seus links q dao erro)
EsgRepublic.Payport.Mvc.Areas.Admin.HomeController
Este é o controller que se for acessado permite o acesso do outro sem erros.
EsgRepublic.Payport.Mvc.Areas.Employees.EmployeeController
Este é o controller problemático (seus links q dao erro)
EsgRepublic.Payport.Mvc.Areas.Admin.HomeController
Este é o controller que se for acessado permite o acesso do outro sem erros.
Responder
Clique aqui para fazer login e interagir na Comunidade :)