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-mvc – 在运行时ASP.NET捆绑和缩小有什么好处?
- ASP.NET路由:令牌之间的字面子段和来自文字子段的字符的路
- asp.net-mvc-4 – .NET 4.5中没有调用HttpModule
- 为什么在发送到asp.net web方法之前jquery不将我的数组转换
- asp.net – 如何从codebehind访问web.config的httpRuntime部
- asp.net-mvc – 修改后ASP.NET包缓存不清除
- 如何重定向到returnUrl在Asp.Net MVC5中工作
- asp.net-mvc – DAL – BLL - GUI组合根.如何设置DI绑定?
- asp.net-mvc – 在asp.net mvc中设置为Session的持久cookie
- file-upload – 增加Kestrel的上传请求长度限制
- 如何在asp.net会员中手动更改密码?
- asp.net-mvc-3 – ViewBag在Extension Class中返
- IIS中的Asp.Net核心MVC应用程序Windows身份验证
- reportviewer – 在ASP.NET MVC中的RDLC报表中看
- iis – 是否需要serviceAutoStartProvider属性来
- asp.net-mvc-3 – 验证摘要消息中的链接
- asp.net – IValidatableObject在DataAnnotation
- asp.net – 如何修复在IIS中运行的Web服务中的“
- asp.net-mvc3 EditorFor模板名称问题
- 具有Entity Framework Code Only和ASP.NET MVC的
