У меня была такая же проблема, как у вас с Ninject. После нескольких часов поиска я загрузил исходный код с github. Я понял код и отладил несколько методов, чтобы выяснить, как разрешить службы. Все, что мне нужно сделать, это предоставить сервисный локатор, чтобы найти обработчики PolicyViolationException.
Похоже, что Ninject эквивалентен этому.
configuration.ResolveServicesUsing(type => System.Web.Mvc.DependencyResolver.Current.GetServices(type));
Я использовал Ninject MVC3 и использовал приведенный ниже код для загрузки модулей из моего текущего веб-проекта MVC и других сборок.
private static void RegisterServices(IKernel kernel)
{
kernel.Load("*.dll");
//kernel.Load(Assembly.GetExecutingAssembly());
}
Я настроил обработчики PolicyViolationException в моем модуле:
public class MainWebNinjectModule : NinjectModule
{
public override void Load()
{
// other bindings here
Bind<IPolicyViolationHandler>().To<DenyAnonymousAccessPolicyViolationHandler>();
}
}
Другие необходимые зависимости, такие как ISecurityHandler, ISecurityContext и т. Д., Разрешаются внутренним IoC, используемым в FluentSecurity.