diff --git a/src/MvcSiteMapProvider/MvcSiteMapProvider/Web/Routing/RouteDataExtensions.cs b/src/MvcSiteMapProvider/MvcSiteMapProvider/Web/Routing/RouteDataExtensions.cs index b1a93579..5a021f72 100644 --- a/src/MvcSiteMapProvider/MvcSiteMapProvider/Web/Routing/RouteDataExtensions.cs +++ b/src/MvcSiteMapProvider/MvcSiteMapProvider/Web/Routing/RouteDataExtensions.cs @@ -85,8 +85,14 @@ internal static void SetMvcCodeRoutingContext(this RouteData routeData, ISiteMap return; var controllerType = node.SiteMap.ResolveControllerType(node.Area, node.Controller); - var mvcCodeRoutingRouteContext = GetMvcCodeRoutingRouteContext(controllerType, node.Controller); - routeData.DataTokens["MvcCodeRouting.RouteContext"] = mvcCodeRoutingRouteContext; + + // Fix for #416 - If Areas are misconfigured, controllerType may be null. Since MvcCodeRouting + // doesn't work in conjunction with Areas anyway, we are going to ignore this here. + if (controllerType != null) + { + var mvcCodeRoutingRouteContext = GetMvcCodeRoutingRouteContext(controllerType, node.Controller); + routeData.DataTokens["MvcCodeRouting.RouteContext"] = mvcCodeRoutingRouteContext; + } } private static string GetMvcCodeRoutingRouteContext(Type controllerType, string controllerName)