asp.net-mvc – 使用DI ninject抛出错误的自定义角色提供程序
发布时间:2020-12-16 10:01:22 所属栏目:asp.Net 来源:网络整理
导读:我将CustomRoleProver设置为: public class CustomRoleProvider : RoleProvider { private readonly IRepositoryUser _repository; public CustomRoleProvider(IRepositoryUser repository) { _repository = repository; }... 在我的Global.asax.cs中,我有
我将CustomRoleProver设置为:
public class CustomRoleProvider : RoleProvider { private readonly IRepository<User> _repository; public CustomRoleProvider(IRepository<User> repository) { _repository = repository; } ... 在我的Global.asax.cs中,我有: //Create Ninject DI kernel var kernel = new StandardKernel(); kernel.Bind<IRepository<User>>().To<Repository<User>>(); //Tell ASP.NET MVC 3 to use our Ninject DI Container DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel)); 当我尝试运行我的代码时,我得到: 配置错误 分析器错误消息:没有为此对象定义无参数构造函数. 来源错误: 第64行: 所以也许我对DI和ninject有一个完全错误的理解.我认为当它试图实例化CustomRoleProvider时,它会创建用户存储库并将其传递给构造函数,而不是尝试使用无参数的存储库. 我是否理解错误或者我的设置不正确? 我发现这很奇怪,因为DI似乎主要是为控制器工作. 解决方法
你正在编写一个角色提供者,但这些目前还不是DI. MVC中的很多类都是DI感知的,这就是为什么你看到它与控制器协同工作的原因.
为了能够注入构造函数参数,DI容器必须负责创建您希望注入的对象.只是注册一个类型并不会神奇地使它可以定位. 使用角色提供程序,框架内的Roles类可以创建提供程序的实例,包括您的自定义提供程序.它只适用于无参数构造函数.您需要在自定义提供程序中使用类似属性注入的东西,并使用Roles.Provider来获取实例以注入依赖项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何使用HTML5电子邮件输入类型与服务器端.NET
- asp.net-mvc – 在ASP.NET MVC控制器结果中设置HTTP状态不呈
- ASP.NET Web API – 实体框架 – .Include上的500内部服务器
- 如何决定哪个是正确的,WebForms或MVC做ASP.NET时
- asp.net – 避免重复大型应用程序
- ML.NET技术研究系列-2聚类算法KMeans
- asp.net-mvc – Razor MVC4 Url.Action无效
- asp.net-mvc – 是否可以手动更新ModelState.IsValid?
- 测量ASP.NET页面加载时间
- 我可以/我应该将新的ASP.NET MVC 2 RC项目升级到jQuery 1.4
推荐文章
站长推荐
- wcf – OData是否违反了关注点?
- VS2017中使用组合项目_windows服务+winform管理_
- asp.net – 如何获取HttpPostedFileBase文件的大
- stored-procedures – 如何在ASP.Net MVC(C#)中调
- asp.net – 如何在没有往返的情况下更新实体? (
- asp.net-mvc-4 – 如何在ASP.NET MVC中使用React
- MVC3 .NET会话随机丢失会话值并返回null
- 记Asp.Net Core Swagger 使用 并带域接口处理
- asp.net-mvc – MVC路由错误:约束条目’长度’
- 可以在ASP.NET用户控件中使用void async方法吗?
热点阅读