我是ASP.NET的新手,刚刚开始学习ASP.NET MVC 3.我使用默认模板启动了一个新的ASP.NET MVC 3项目,该模板已经配置了大部分成员资格。现在,我正在努力了解幕后的真实情况。
我发现默认模板定义了一个IMembershipService接口,该接口由AccountMembershipService类实现,它基本上只包装System.Web.Security.MembershipProvider。从代码中的注释听起来像这样的抽象是为了便于单元测试。
默认的MembershipProvider在Web.config文件中设置。我的项目是从默认模板创建的,它设置为SqlMembershipProvider。
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
这引用了Web.config文件中的连接字符串,该文件引用了SQL Express数据库“aspnetdb.mdf”。
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
当我第一次创建项目时,没有aspnet.mdf文件。但在运行我的应用程序并注册新用户后,此文件自动生成表格和所有。这里发生了什么?是什么创建了这个文件并指定了应该创建的表?
答案 0 :(得分:2)
这些是由SqlMembershipProvider类创建的。如果您愿意,可以自定义配置文件以使用其他成员资格提供程序或告诉它使用的现有数据库。
使用此工具将适当的表等添加到现有的SQL Server安装中:http://msdn.microsoft.com/en-us/library/ms229862(v=VS.100).aspx