AreaRegistration.RegisterAllAreas() is not Registering Rules For Area
Solution 1
I think due to Visual Studio's caching, some of the dll's aren't compiled properly and this situation can happen. If you do, delete all temp files from following locations:
- C:\Temp
- C:\Users\%Username%\AppData\Local\Microsoft\VisualStudio
- C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
- Path\To\Your\Project\obj\Debug
Update :
- AppData\Local\Temp\Temporary ASP.NET Files
Then restart the Visual Studio. This is how i resolved.
Solution 2
Just add the namespace of your controllers to the AreaRegistration:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
**namespaces: new string[] { "Web.Admin.Controllers" }**
);
}
atakanozgun
I'm a software engineer who lost in the development cycle one and never found again.
Updated on July 24, 2022Comments
-
atakanozgun almost 2 years
I have an MVC 4 web application which consists some areas. I have a problem with the routing rules of an area named "Catalog". The RouteConfig.cs file is:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, ); }
and Global.asax as follows:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
And CatalogAreaRegistration is something like this:
public class CatalogAreaRegistration : AreaRegistration { public override string AreaName { get { return "Catalog"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Catalog_default", "Catalog/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }
The problem is when i debug, RouteCollection routes does not include rules that are defined in the area. I used routedebugger and saw that routes collection does not consists rules of "Catalog" area. It has only rules in the RouteConfig.
I have no idea what is the problem. Thanks in advance.
-
Imdad about 5 yearsDeleted all my user settings.......Annoying, side effects like that should not result in the answer being selected in my opinion. :( And did not fix the issue for me at least.