private IEnumerable <string> GetDisallowedActions() { var disallows = new List <string>(); foreach (var controller in Assemblies.SelectMany(asm => asm.GetTypesThatAre <Controller>()).Where(c => !c.HasAttribute <RobotsDisallowAttribute>())) { var controllerName = controller.Name; controllerName = controllerName.Substring(0, controllerName.Length - "Controller".Length); var areaName = ""; // find the area name? if (AreaNamespaces.ContainsKey(controller.Namespace)) { areaName = AreaNamespaces[controller.Namespace]; } foreach (var actionMethod in controller.GetMethods(BindingFlags.Public | BindingFlags.Instance).Where(m => m.HasAttribute <RobotsDisallowAttribute>())) { var attr = actionMethod.GetCustomAttribute <RobotsDisallowAttribute>(); if (!string.IsNullOrWhiteSpace(attr.Area) && !string.IsNullOrWhiteSpace(areaName)) { areaName = attr.Area; } var action = Url.Action(actionMethod.Name, new { controller = controllerName, area = areaName }); disallows.Add(action.ToLowerInvariant()); } } return(disallows); }
private IEnumerable <string> GetDisallowedRegisteredAreas() { var disallows = new List <string>(); foreach (var area in Assemblies.SelectMany(asm => asm.GetTypesThatAre <AreaRegistration>()).Where(t => t.HasAttribute <RobotsDisallowAttribute>())) { var instance = (AreaRegistration)Activator.CreateInstance(area); var url = Url.Action("", new { controller = "", area = instance.AreaName }); AreaNamespaces.Add(area.Namespace, instance.AreaName); disallows.Add(url.ToLowerInvariant()); } return(disallows); }
private IEnumerable <string> GetDisallowedControllers() { var disallows = new List <string>(); foreach (var controller in Assemblies.SelectMany(asm => asm.GetTypesThatAre <Controller>()).Where(c => c.HasAttribute <RobotsDisallowAttribute>())) { var controllerName = controller.Name; var attr = controller.GetCustomAttribute <RobotsDisallowAttribute>(); controllerName = controllerName.Substring(0, controllerName.Length - "Controller".Length); var areaName = attr.Area; // find the area name? if (AreaNamespaces.ContainsKey(controller.Namespace)) { areaName = AreaNamespaces[controller.Namespace]; } var url = Url.Action("", new { controller = controllerName, area = areaName }); disallows.Add(url.ToLowerInvariant()); } return(disallows); }