5

我是 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 文件。但是在运行我的应用程序并注册一个新用户之后,这个文件会自动生成表和所有文件。这里发生了什么?是什么创建了这个文件并指定了应该创建的表?

4

1 回答 1

2

这些是由 SqlMembershipProvider 类创建的。如果您愿意,您可以自定义配置文件以使用不同的成员资格提供程序或告诉它使用哪个现有数据库。

使用此工具将适当的表等添加到现有的 SQL Server 安装中:http: //msdn.microsoft.com/en-us/library/ms229862 (v=VS.100).aspx

于 2011-04-16T03:19:24.367 回答