ASP.NET MVC 1.0项目模板包括
会计主管
类,它支持构造函数注入:
public AccountController(IFormsAuthentication formsAuth,
IMembershipService service)
{
FormsAuth = formsAuth ?? new FormsAuthenticationService();
MembershipService = service ?? new AccountMembershipService();
}
安
帐户成员身份服务
类也包括在内,它也支持构造函数注入:
public AccountMembershipService(MembershipProvider provider)
{
_provider = provider ?? Membership.Provider;
}
我相信你们中的许多人已经将这些用于单元测试,但我的目标是注入
SqlMembershipProvider
使用windsor,因此在运行时使用windsor xml文件而不是web.config配置它。换言之,
我想对AccountMembershipService类实际使用构造函数注入
,我想继续使用内置的ASP.NET 2.0成员资格系统。我只想让会员制的配置通过温莎国际奥委会。
在不编写自己的成员资格提供程序的情况下,是否可以这样做,或者sqlmembershipprovider与IOC的配合不好?
From MSDN
:“ASP.NET调用sqlMembershipProvider构造函数以创建应用程序配置中指定的sqlMembershipProvider类的实例。这个构造函数是
不打算从您的代码中使用
."
我相信
Phil asked a very similar question
但是我没有足够的经验去摸索
the answers
他收到了。
谢谢你的帮助。
更新:
为了清楚起见,我通过DI提供应用程序的成员资格提供者的原因是为了支持多个租户。每个租户都有一个独立的数据库,
ASP membership tables
. DI允许我在运行时切换连接字符串,从而使核心应用程序不知道每个租户正在使用哪个数据库。温莎正在控制DI,它“知道”哪个租户通过URL发出请求:
var url = HttpContext.Current.Request.ServerVariables["HTTP_HOST"]
迈克哈德洛
talks about this technique here.
我只是想把sqlmembershipprovider集成到他使用这个IOC设计中。
再次感谢。