我是 ASP.NET 新手,刚刚开始学习 ASP.NET MVC 3。我已经使用默认模板开始了一个新的 ASP.NET MVC 3 项目,该模板已经配置了大部分成员资格。现在我正试图了解幕后真正发生的事情。
我发现默认模板定义了一个由 AccountMembershipService 类实现的 IMembershipService 接口,该类基本上只是包装了一个 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 文件。但是在运行我的应用程序并注册一个新用户之后,这个文件会自动生成表和所有文件。这里发生了什么?是什么创建了这个文件并指定了应该创建的表?