asp.net-mvc – 如何为MVC4配置Ninject并提供自定义成员资格?
根据这篇文章描述
custom-membership-provider-with-repository-injection
我实现自定义成员资格提供注入. 定制会员提供商 using Ninject; public class CustomMembershipProvider : MembershipProvider { [Inject] public IUserRepository UserRepository { get; set; } [...] 自定义角色提供者 using Ninject; public class CustomRoleProvider : RoleProvider { [Inject] public IUserRoleRepository UserRoleRepository { get; set; } [...] 在Web.Config中 <membership defaultProvider="CustomsMembershipProvider"> <providers> <clear/> <add name="CustomsMembershipProvider" type="namespace.CustomsMembershipProvider"/> </providers> </membership> <roleManager enabled="true" defaultProvider="customRoleProvider"> <providers> <clear/> <add name="customRoleProvider" type="namespace.customRoleProvider"/> </providers> </roleManager> 现在在NinjectWebCommon中 private static IKernel CreateKernel() { var kernel = new StandardKernel(); kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel); kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); RegisterServices(kernel); return kernel; } private static void RegisterServices(IKernel kernel) { [...] kernel.Bind<IUserRepository>().To<UserRepository>(); kernel.Bind<IUserRoleRepository>().To<UserRoleRepository>(); // Inject user & role repository into our custom membership & role providers. kernel.Inject(Membership.Provider); kernel.Inject(Roles.Provider); } 当我运行应用程序时,我收到错误
来自kernel.Inject(Membership.Provider);这条线 但是如果我将内核设置放在Application_Start中 我得到了吼叫错误
怎么解决这个问题. ?? 解决方法
我在尝试这个时遇到了很多麻烦,最后添加了一个让我获得存储库的方法
using System.Web.Mvc; //Used to access dependency resolver private IUserRepository GetUserRepository() { return DependencyResolver.Current.GetService<IUserRepository>(); } 然后我在需要它的方法中调用它 我能够使用构造函数注入来获取注入库,但是一旦我去使用存储库,对象就被处理掉了.我发现上面是最简单的选择. 但是,我猜你也可以使用Initialize()方法 IUserRepository userRepository; public override void Initialize(string name,NameValueCollection config) { base.Initialize(name,config); this.userRepository = DependencyResolver.Current.GetService<IUserRepository>(); } 或者另一种方式是使用财产 public IUserRepository UserRepository { get { return DependencyResolver.Current.GetService<IUserRepository>(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 如何在ASP.NET Core中启动Quartz?
- asp.net-mvc – 如何在MVC 4 API中打印JSON脚本
- 异常 – ASP.NET应用程序池关闭问题
- asp.net – 具有复合键的Odata v3 Web Api导航
- 如何在asp.net表单身份验证中执行滑动和绝对超时
- asp.net-mvc-3 – 重定向与RedirectToRouteResult不工作从其
- asp.net-mvc – ASP.NET MVC是否使用常规工具箱控件?
- asp.net-mvc – 为ASP.NET MVC Action Links添加rel和title
- asp.net-mvc – MVC Tag助手无法正常工作
- asp.net-mvc-4 – 无法找到或加载已注册的.Net Framework数
- asp.net-mvc-3 – 防止篡改ASP.NET MVC EF中的表
- asp.net-core-2.0 – .net标准2.0中的Dbgeograph
- asp.net-mvc – 尝试将asp.net web发布到Azure时
- asp.net-mvc – MVC3部署依赖问题
- asp.net-mvc-3 – 为什么两个类,视图模型和域模型
- asp.net-mvc – 过滤Kendo UI MVC Grid时的自定义
- 无法获得突出显示的asp.net开始页面jquery |回发
- asp.net-mvc-3 – 从JsonResult MVC3 / Razor中动
- asp.net-mvc-3 – asp.net mvc 3中的自定义错误页
- asp.net-mvc – MVC 4捕获所有路由从未到达