2010-02-25 6 views
3

Je développe une application ASP.NET avec Visual Studio 2008 SP1 et C#. J'utilise également Sql Server 2008 SP1.SqlMembershipProvider: utiliser ma propre base de données comme base de données de banque d'utilisateurs

J'essaye d'ajouter les tables créées avec la commande aspnet_regsql -S (local) -E -A m à ma propre base de données.

Si j'exécute cette commande, il va créer une base de données (base de données Aspnetdb) avec quatre tables. Je veux savoir s'il y a une commande qui crée ces tables dans ma propre base de données (appelée myDatabase, par exemple).

Et, lorsque les tables sont créées. Comment puis-je connecter l'authentification à myDatabase?

Merci

Répondre

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

va générer dans la base donnée par la chaîne de connexion

Aussi, vous devez configurer MembershipProvider pour travailler avec votre base de données. Il suffit d'ajouter ceci à votre 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> 
4

Selon la sortie de « aspnet_regsql -? », il y a un paramter -d que vous pouvez utiliser, rendant ainsi votre commande:

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

Sinon, vous pouvez appeler le " paramètre -sqlexportonly filenamegoes.here » pour générer un script Sql que vous pouvez consulter et ensuite appliquer à votre base de données:

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

La documentation MSDN pour SqlMembershipProvider explique comment changer où il cherche sa base de données, en particulier la ligne connectionStringName = "SqlServices" dans l'exemple.

2

Vous pouvez spécifier l'option -C <connection string> au lieu de l'option -S (local) et spécifier un nom de base de données dans la chaîne de connexion. Cela permet d'exécuter les scripts de création sur une base de données existante. Voir here pour les options aspnet_regsql.

Questions connexes