SqlMembershipProvider:使用我自己的数据库作为用户存储数据库

时间:2010-02-25 11:52:28

标签: c# asp.net sql-server-2008 membership-provider

我正在使用 Visual Studio 2008 SP1 C#开发 ASP.NET 应用程序。我也在使用 Sql Server 2008 SP1

我正在尝试将使用命令aspnet_regsql -S (local) -E -A m创建的表添加到我自己的数据库中。

如果我运行该命令,它将创建一个包含四个表的数据库( Aspnetdb 数据库)。我想知道是否有一个命令在我自己的数据库中创建这些表(例如,名为 myDatabase )。

并且,在创建表格时。如何将身份验证连接到 myDatabase

谢谢

3 个答案:

答案 0 :(得分:4)

根据“aspnet_regsql -?”的输出,你可以使用一个参数-d,从而制作你的命令:

 aspnet_regsql -S (local) -E -A -d myDatabase

或者,您可以使用“-sqlexportonly filenamegoes.here”参数调用它来生成可以查看然后应用于数据库的Sql脚本:

 aspnet_regsql -S (local) -E -A -sqlexportonly output.sql

SqlMembershipProvider的MSDN文档说明了如何更改其数据库的查找位置,特别是示例中的 connectionStringName =“SqlServices”行。

答案 1 :(得分:4)

aspnet_regsql-C "Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True" ...

将在连接字符串

给出的数据库中生成

您还应配置MembershipProvider以使用您的数据库。只需将其添加到您的web.config

即可
<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True" />
  </connectionStrings>
  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
        name=".ASPXFORMSAUTH" />
    </authentication>

    <membership defaultProvider="SqlProvider"
      userIsOnlineTimeWindow="15">
      <providers>
        <add 
          name="SqlProvider" 
          type="System.Web.Security.SqlMembershipProvider" 
          connectionStringName="SqlServices"
          applicationName="MyApplication"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true"
          requiresUniqueEmail="false"
          passwordFormat="Hashed"
          maxInvalidPasswordAttempts="5"
          passwordAttemptWindow="10" />
      </providers>
    </membership>
  </system.web>
</configuration>

答案 2 :(得分:2)

您可以指定-C <connection string>选项而不是-S (local)选项,并在连接字符串中指定数据库名称。这允许在现有数据库上运行创建脚本。有关aspnet_regsql选项,请参阅here