public void PopulateFeature(IEnumerable <ApplicationPart> parts, ControllerFeature feature) { var allowed = feature.Controllers.Where(ti => ti.Assembly == MainAssembly || (AllowedAreas.TryGetC(ti.Assembly)?.Any(ns => ti.Namespace.StartsWith(ns)) ?? false) || AllowedControllers.Contains(ti.AsType())); var toRemove = feature.Controllers.Where(ti => !allowed.Contains(ti)); feature.Controllers.RemoveAll(ti => toRemove.Contains(ti)); }
public override IDictionary <string, HttpControllerDescriptor> GetControllerMapping() { var dic = base.GetControllerMapping(); var result = dic.Where(a => a.Value.ControllerType.Assembly == MainAssembly || AllowedControllers.Contains(a.Value.ControllerType)).ToDictionary(); var removedControllers = dic.Keys.Except(result.Keys);//Just for debugging return(result); }
public static void RegisterArea(Type type) { AllowedControllers.AddRange(type.Assembly.ExportedTypes .Where(c => (c.Namespace ?? "").StartsWith(type.Namespace) && typeof(ApiController).IsAssignableFrom(c))); }
public static void RegisterController <T>() { AllowedControllers.Add(typeof(T)); }