2011-01-26 68 views
0

我正在开发一个ASP.NET MVC网站,实际上使用自定义profileProvider来检索信息(如最后一页访问,最大数量的记录在网格中查看,通过邮件通知等)与存储在自定义数据库中的单个用户相关。 我不喜欢这种技术,因为profileProvider不是可以轻松注入的,还有另一种方式来获得配置文件提供程序公开的相同功能。我认为可能使用一个asp.net模块,但我不是专家。替代profileprovider在asp.net mvc

回答

1

我想什么tartafe意味着提供者(也是您的自定义ProfileProvider)是由外部代码(System.Web.Configuration.ProvidersHelper)实例化和控制的。

依赖注入模式表示您的自定义提供程序依赖的任何对象应该由控制器(或容器)传入。 (CFR)。 Dependency Injection for Loose Coupling)。通常,控制器将初始化一个存储库,datacontext或其他对象,并通过构造函数或属性传递它。但是对于自定义提供者来说这是不可能的,因为它的'控制器'被封装在System.Web.Configuration中。

我认为这个问题比成为︰有什么办法来影响ProvidersHelper如何实例化和控制我们的自定义提供程序?

0

你是什么意思,它不容易注射?

如果您只是表示您不想在控制器中使用它,请创建一个操作筛选器,添加查看数据所需的用户信息模型。

如果您的意思是您不想在您使用配置文件信息的某个位置使用System.Web依赖项,请创建一个适配器界面,如IProfileService,并使用配置文件提供程序包装器来实现它。

如果你不是指我猜想的两件事情之一,那么请尝试解释,因为语言有点不清楚。

+0

嗨,配置文件提供程序有一个没有参数的构造函数。所以我不能轻易地使用依赖注入提供程序,我想使配置文件提供程序许可的东西填充httpcontext的对象用户,想法? – tartafe 2011-02-02 17:47:48

+0

这对于动作过滤器来说并不复杂。您使用的是什么依赖注入服务,因为没有理由不能使用DI与ProfileProvider。 – smartcaveman 2011-02-02 18:21:01