В настоящее время я пытаюсь настроить внедрение зависимостей и переопределить атрибут авторизации.Я пытался следовать нескольким примерам, хотя, кажется, всегда получаю ошибки.
Global.asax
public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication
{
private class MyModule : NinjectModule
{
public override void Load()
{
this.BindFilter<SageAdminAuthorizationFilter>(FilterScope.Controller, 0);
Bind<IAuthentication>().To<CustomAuthenticationService>();
}
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
protected override IKernel CreateKernel()
{
var modules = new INinjectModule[] {
new MyModule()
};
var kernel = new StandardKernel(modules);
return kernel;
}
}
Фильтр аутентификации
public class CustomAuthenticationService : IAuthentication
{
public void SignIn(string claimedIdentifier, bool createPersistentCookie)
{
//Write Sign in code here
FormsAuthentication.SetAuthCookie(claimedIdentifier, createPersistentCookie);
}
public void SignOut()
{
FormsAuthentication.SignOut();
}
public bool Authorize(HttpContextBase httpContext)
{
//Check here if the user can administer the admin
return false;
}
}
//The Authorization attribute on a controller
public class CustomAdminAuthorizationFilter : IAuthorizationFilter
{
private readonly IAuthentication _authentication;
public SageAdminAuthorizationFilter(IAuthentication authentication)
{
_authentication = authentication;
}
public void OnAuthorization(AuthorizationContext filterContext)
{
_authentication.Authorize(filterContext.HttpContext);
}
}
Я всегда получаю
Последовательность не содержит элементов.
Любая помощь приветствуется.
Обновление: я все еще получаю ту же ошибку.
Вызовстек выглядит следующим образом
Поиск источника для 'c: \ Projects \ Ninject \ ninject.web.mvc \ mvc3 \ src \ Ninject.Web.Mvc \ NinjectHttpApplication.cs'.Контрольная сумма: MD5 {3d e3 7f 86 44 70 дБ 0 3c 6f e0 97 fb 1e 12 13} Файл 'c: \ Projects \ Ninject \ ninject.web.mvc \ mvc3 \ src \ Ninject.Web.Mvc \ NinjectHttpApplication.cs' не существует.Поиск в документах сценария для 'c: \ Projects \ Ninject \ ninject.web.mvc \ mvc3 \ src \ Ninject.Web.Mvc \ NinjectHttpApplication.cs' ... Поиск проектов для 'c: \ Projects \ Ninject \ ninject.web.mvc \ mvc3 \ SRC \ Ninject.Web.Mvc \ NinjectHttpApplication.cs.Файл не найден в проекте.Поиск в каталоге 'C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ crt \ src \' ... Поиск в каталоге 'C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ atlmfc \src \ mfc \ '... Поиск в каталоге' C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ atlmfc \ src \ atl \ '... Поиск в каталоге' C: \ Program Files (x86)\ Microsoft Visual Studio 10.0 \ VC \ atlmfc \ include \ '... Параметры исходных файлов отладки для активного решения указывают, что отладчик не будет просить пользователя найти файл: c: \ Projects \ Ninject \ ninject.web.MVC \ mvc3 \ SRC \ Ninject.Web.Mvc \ NinjectHttpApplication.cs.Отладчику не удалось найти исходный файл 'c: \ Projects \ Ninject \ ninject.web.mvc \ mvc3 \ src \ Ninject.Web.Mvc \ NinjectHttpApplication.cs'.
Я установил Ninject и Ninject.MVC3 от Nuget.Это выглядит, хотя он пытается найти файлы для отладки.Кто-нибудь сможет дать мне какую-либо информацию о том, почему это происходит.
Я также получаю эту ошибку
[InvalidOperationException: последовательность не содержит элементов] System.Linq.Enumerable.Single (IEnumerable 1 source) +320
Ninject.Web.Mvc.Bootstrapper.Initialize(Func
1 createKernelCallback) в c: \ Projects \ Ninject \ ninject.web.mvc \ mvc3 \ src \ Ninject.Web.Mvc \ Bootstrapper.cs: 67 Ninject.Web.Mvc.NinjectHttpApplication.Application_Start () в c: \ Projects\ Ninject \ ninject.web.mvc \ mvc3 \ SRC \ Ninject.Web.Mvc \ NinjectHttpApplication.cs: 65