From f9fc69f9d068af7f6114657d392a206f63f53949 Mon Sep 17 00:00:00 2001 From: Shad Storhaug Date: Tue, 27 Oct 2015 19:34:41 +0700 Subject: [PATCH] Fix for #416, null reference exception in certain configurations caused by ControllerTypeResolver returning null. --- .../Web/Routing/RouteDataExtensions.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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)