ASP.NET настройка Ninject

405
23 января 2017, 17:19

Проблема с настройкой DI контейнера Ninject. Имеется автоматически сгенерированный класс NinjectWebCommon. В этом классе в методе RegisterService регистрирую свой класс

private static void RegisterServices(IKernel kernel)
{
    DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}    

Мой класс имеет следующий код

    public class NinjectDependencyResolver : IDependencyResolver
    {
        private IKernel kernel;
        public NinjectDependencyResolver(IKernel kernel)
        {
            this.kernel = kernel;
            kernel.ConfigurateResolverWeb();
        }
        public object GetService(Type serviceType)
        {
            return kernel.TryGet(serviceType);
        }
        public IEnumerable<object> GetServices(Type serviceType)
        {
            return kernel.GetAll(serviceType);
        }
    }

Так же имеется статический класс, который предоставляет расширяющие методы для регистрации:

public static void ConfigurateResolverWeb(this IKernel kernel)
{
    Configure(kernel, true);
}
public static void ConfigurateResolverConsole(this IKernel kernel)
{
    Configure(kernel, false);
}
private static void Configure(IKernel kernel, bool isWeb)
{
    if (isWeb)
    {
        kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
        kernel.Bind<DbContext>().To<EntityModel>().InRequestScope();
    }
    else
    {
        kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InSingletonScope();
        kernel.Bind<DbContext>().To<EntityModel>().InSingletonScope();
    }
    // ......
}

При запуске Web-приложения, в методе запуска NinjectWebCommon генерируется ошибка

public static void Start()
{
    DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
    DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
    bootstrapper.Initialize(CreateKernel); // Здесь ошибка
} 

Исключение:Вызвано: "Отказано в доступе по пути "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\~AspAccessCheck_1f61be7910612.tmp"." (System.UnauthorizedAccessException) Возникло System.UnauthorizedAccessException: "Отказано в доступе по пути "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\~AspAccessCheck_1f61be7910612.tmp"." Время: 21.01.2017 23:38:08 Поток:<Без имени>[10612]

Не пойму в чем проблема. Подскажите как справиться с данной проблемой Уcтановлены пакеты: Ninject 3.2.2, Ninject.MVC3 3.2.1, Ninject.Web.Common 3.2.3

P.S. Проверял в консольном приложении - все работает. Использовал такой код

kernel = new StandardKernel();
kernel.ConfigurateResolverConsole();
READ ALSO
Asp.Net Web Api2 + SignalR

Asp.Net Web Api2 + SignalR

Подскажите плиз

385
Клиент серверный диалог

Клиент серверный диалог

Вопрос по TcpClientНапример, один TcpClient отправляет какое то сообщение другому

325
Не меняется цвет текста в строке DataGridView

Не меняется цвет текста в строке DataGridView

Пытаюсь поменять цвет текст в строке, но при загрузке формы строка моргнет нужным цветом и опять станет цвет по умолчанию

476
Объединение массивов байтов

Объединение массивов байтов

Есть необходимость присоединять один массив байт к другому (много раз подряд)

455