我正在开发一个ASP.NET MVC网站,它实际上使用自定义profileProvider来检索与存储在中的单个用户相关的信息(如访问的最后一页,要在网格中查看的最大记录数,通过邮件通知等)自定义数据库。 我不喜欢这种技术,因为profileProvider不能轻松注入,有另一种方法可以获得由配置文件提供者公开的相同功能吗?我认为可能使用asp.net模块但我不是专家。
答案 0 :(得分:1)
我认为tartafe意味着提供者(也是您的自定义ProfileProvider)由外部代码(System.Web.Configuration.ProvidersHelper)实例化和控制。
依赖注入模式表示自定义提供程序所依赖的任何对象应由控制器(或容器)传入。 (CFR)。 Dependency Injection for Loose Coupling)。通常,您的控制器将初始化存储库,datacontext或其他对象,并通过构造函数或属性传递它。但是对于自定义提供程序来说这是不可能的,因为它的“控制器”是在System.Web.Configuration中密封的。
我认为问题不是变成:有没有办法影响ProvidersHelper如何实例化和控制我们的自定义提供者?
答案 1 :(得分:0)
你到底是什么意思不容易注射?
如果您只是想在控制器中不想要它,那么创建一个动作过滤器,添加您查看数据所需的用户信息模型。
如果您的意思是您不想在使用配置文件信息的地方使用System.Web依赖关系,那么请创建一个适配器接口,如IProfileService
,并使用配置文件提供程序包装器实现它。
如果你不是指我想到的两件事中的任何一件,那么请试着解释,因为语言有点不清楚。