diff --git a/src/RouteJs.Mvc4/MvcRouteFilter.cs b/src/RouteJs.Mvc4/MvcRouteFilter.cs index 8b6d4a9..a42dd17 100644 --- a/src/RouteJs.Mvc4/MvcRouteFilter.cs +++ b/src/RouteJs.Mvc4/MvcRouteFilter.cs @@ -3,6 +3,7 @@ using System.Web.Mvc; using System.Web.Routing; using System.Linq; +using System.Reflection; namespace RouteJs.Mvc { @@ -61,7 +62,7 @@ private void BuildLists() { // Get all the controllers from all loaded assemblies var controllers = AppDomain.CurrentDomain.GetAssemblies() - .SelectMany(assembly => assembly.GetTypes()) + .SelectMany(GetTypesFromAssembly) .Where(type => type.IsSubclassOf(typeof(Controller))) .ToList(); @@ -81,6 +82,18 @@ private void BuildLists() } } } + + private IEnumerable GetTypesFromAssembly(Assembly assembly) + { + try + { + return assembly.GetTypes(); + } + catch (ReflectionTypeLoadException) + { + return new Type[] { }; + } + } /// /// Gets a mapping of namespace prefix to area name