現在、私は依存関係注入をセットアップし、認証属性を無効にしようとしています。私はいくつかの例に従おうとしましたが、私はいつもエラーがあるようです。ASP.NET MVC3 IAuthorisationfilter Ninject依存関係
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);
}
}
私はいつも
シーケンスに要素が含まれていない受信。
助けてください。
更新: 私はまだ同じエラーが発生しています。 ':プロジェクト\ Ninject \ \ ninject.web.mvc \ mvc3 \ SRC \ Ninject.Web.Mvc \ NinjectHttpApplication.cs C' のソースの検索
は、次のように
コールスタックがあります。チェックサム:MD5 {3d e3 7f 86 44 70 db 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ファイル(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'を見つけることができませんでした。
NugetからNinjectとNinject.MVC3をインストールしました。それはデバッグするファイルを見つけることを試みているように見えます。なぜこのようなことが起こっているのか誰にでも私に何か情報を伝えることはできますか?
Iもこのエラーが発生した
[例外InvalidOperationExceptionは:シーケンスに要素が含まれていない] System.Linq.Enumerable.Single Cにおける(IEnumerableを1 source) +320 Ninject.Web.Mvc.Bootstrapper.Initialize(Func
1 createKernelCallback):プロジェクト\ \ Ninject \ ninject.web.mvc \ mvc3 \ 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
申し訳dependecyリゾルバはありません赤いニシン。それは他の人々の例に従うことを試みることから残された。 –