2010-03-11 6 views
4

J'ai créé une base de données avec aspnet_regsql, la base de données a été créée en SQL Server 2008 et non dans le dossier de données de mon projet (dois-je la déplacer manuellement?) .
Ensuite, dans l'outil d'administration de site Web, je suis allé à la section fournisseur et j'ai cliqué sur le bouton don test.Adhésion à Asp.Net via ASP.NET Outil administrateur de site Web

J'ai eu une erreur:

Could not establish a connection to the database. If you have not yet created the SQL Server database, exit the Web Site Administration tool, use the aspnet_regsql command-line utility to create and configure the database, and then return to this tool to set the provider.

Peut-être que j'ai besoin de mettre quelque chose dans un web.config, comme les paramètres des membres ou des chaînes de connexion (ou ASP.NET administrateur du site Web outil devrait créer ces paramètres pour moi)?

Mise à jour:
Peut-être que cela arrive parce que je suis en utilisant SQL Server 2008 complet et non exprimer?

Mise à jour 2:

Après avoir défini la section d'adhésion et la chaîne de connexion à ma base de données de aspnetdb dans l'outil d'administration du site Web que j'ai ouvert Sécurité-> Configuration de la sécurité Wizard-> Définir les rôles (étape 4) Je suis arrivé ce erreur:

Une erreur a été rencontrée. Veuillez revenir à la page précédente et réessayer.

The following message may help in diagnosing the problem: Unable to connect to SQL Server database. at System.Web.Administration.WebAdminPage.CallWebAdminHelperMethod(Boolean isMembership, String methodName, Object[] parameters, Type[] paramTypes) at ASP.security_wizard_wizardpermission_ascx.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Répondre

0

Open Studio de gestion SQL et ouvrez la base de données maître, faire une nouvelle requête et tapez

sp_configure 'user instances enabled','1' 

execute ce, puis tapez

reconfigure 

et d'exécuter cela aussi pour que les modifications prennent effet. Pour plus d'informations sur sp_configure, vous pouvez lire http://msdn2.microsoft.com/en-us/library/ms188787.aspx si vous souhaitez lister toute la configuration, puis exécuter sp_configure sans aucun paramètre.

+0

Je reçois une erreur: L'option de configuration 'user instances enabled' n'existe pas ou peut être une option avancée. – luppi

+0

Quelle version du serveur Sql utilisez-vous? Ce qui précède ne fonctionne qu'avec les éditions express. – bristows

+0

S'il vous plaît voir la mise à jour que j'ai ajouté ... SQL Server 2008 complet ... Comment est-ce que je travaille avec la version complète? – luppi

5

Oui, vous devrez modifier vos chaînes de connexion dans le fichier web.config.

Regardez dans le web.config, vous verrez probablement quelque chose comme ça dans le <membership> élément:

<membership> 
    <providers> 
    <clear /> 
    <add connectionStringName="LocalSqlServer" 
     name="AspNetSqlMembershipProvider" 
     [...] 
     type="System.Web.Security.SqlMembershipProvider, 
       System.Web, 
       Version=2.0.0.0, 
       Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a" /> 
    </providers> 
</membership> 

Le connectionStringName attribut indique le cadre de regarder dans votre élément <connectionStrings> pour une chaîne de connexion appelée « LocalSqlServer "- ceci peut ne pas être défini dans votre web.config car il peut être hérité de Machine.Config dans le répertoire principal de configuration de .Net Frameworks.

Vous devez probablement choisir un nouveau nom pour la chaîne de connexion et mettre à jour vos membres, rôles et profils (si vous les utilisez tous) pour utiliser le nouveau nom.

Puis dans l'élément <connectionStrings> ont les éléments suivants:

<connectionStrings> 
    <remove name="LocalSqlServer" /> 
    <add name="MyConnectionString" 
     connectionString="Data Source=[ServerName];Initial Catalog=[DatabaseName];Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Ajustez les valeurs en fonction de vos systèmes - je vous recommande de sécurité intégrée sur le stockage de votre connexion de base de données et le mot de passe dans le web.config, mais YMMV (par exemple, sur mon hôte partagé, je ne peux pas utiliser la sécurité intégrée, je dois donc fournir des détails utilisateur/passe).L'outil d'administration de site Web honorera également ces chaînes de connexion.

Modifier pour répondre aux commentaires

Avez-vous connecté avec succès à tous? Ou créé un utilisateur? Je veux juste exclure que vous avez la chaîne de connexion configurée et fonctionne?

Le fournisseur de rôles est-il configuré et activé également? Avez-vous mis à jour l'attribut "connectionStringName" dans ce champ? Notez que, comme précédemment, la machine.config spécifie pour vous un fournisseur de rôle par défaut qui tente de pointer vers une instance SqlExpress locale - d'où provient probablement l'erreur de connexion.

<!-- Note enabled="true" - you need to turn this one on! --> 
<roleManager enabled="true"> 
    <providers> 
    <clear /> 
    <add connectionStringName="MyConnectionString" 
     [...] 
     type="System.Web.Security.SqlRoleProvider, 
       System.Web, 
       Version=2.0.0.0, 
       Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a" /> 
    </providers> 
</roleManager> 

Pour plus de détails sur les attributs élidés, je recommande la documentation:

Une fois que vous avez configuré que cela devrait fonctionner tout.

Si vous ne l'avez pas été en mesure de créer un utilisateur/connecté, je vérifie:

  1. La chaîne de connexion - assurez-vous que les noms correspondent, assurez-vous que le data source correspond à votre instance de serveur (non toujours juste le nom de votre machine, il pourrait être quelque chose comme "MachineName \ SqlServer"). Si vous utilisez la sécurité intégrée, vous devrez vous assurer que vous avez donné le compte que votre site fonctionne sous les droits appropriés dans la base de données: Vous devriez trouver que votre base de données a un certain nombre de rôles commençant par aspnet_, Pour vous assurer que vous pouvez créer des utilisateurs (dont vous aurez besoin si vous avez un formulaire d'inscription), vous devez ajouter le compte aux rôles aspnet_XXXX_FullAccess (un pour l'appartenance, la personnalisation, le profil et les rôles).
+0

Je n'ai pas la section dans web.config, donc je l'ai créé manuellement, et cela fonctionne. Maintenant mes questions: 1) Y a-t-il une option pour générer des paramètres dans web.config automatiquement, ou seulement manuellement? 2) Puis-je utiliser le dossier de données avec le fichier de base de données local avec sql server 2008 full? – luppi

+0

s'il vous plaît voir mise à jour 2 – luppi

+0

Désolé pour le retard dans la réponse, était dans une réunion toute la journée. –

0

Suivez les étapes ci-dessous pour une bonne intégration d'adhésion à votre site Web (si vous voyez l'erreur ci-dessus comme

« Could not establish a connection to the database. If you have not yet created the SQL Server database, exit the Web Site Administration tool, use the aspnet_regsql command-line utility to create and configure the database, and then return to this tool to set the provider. »).

étape 1:

Run aspnet_regsql.exe utilitaire à partir de C: \ windows \ Microsoft.NET \ Framework dossier \ v2.0.50727 sur votre machine. La sélection ou le double-clic sur l'utilitaire aspnet_regsql.exe ouvre l'assistant comme ci-dessous.

enter image description here

Sélection bouton Suivant dans la fenêtre ci-dessus ouvre la fenêtre suivante où vous pouvez configurer SQL Server pour les services d'application ou supprimer des informations de services d'application à partir d'une base de données existante.

étape 2:

Sélectionnez Configurer SQL Server pour le bouton radio de services d'application à installer une nouvelle base de données et sélectionnez le bouton Suivant.

enter image description here

Étape 3

Entrez votre nom du serveur SQL Express comme indiqué ci-dessous. Notez que vous pouvez changer le nom de la base de données des services applicatifs par défaut (aspnetdb par défaut). (Ou) vous pouvez sélectionner l'authentification Sql Server (nom d'utilisateur, mot de passe, nom de base de données respectif)

base de données ASPNETServices

enter image description here

Étape 4:

sélectionnez le bouton Suivant et vérifiez que les paramètres sont corrects pour aller plus loin avec l'installation (indiqué dans l'image ci-dessous), puis sélectionnez le bouton Suivant.

enter image description here

Étape 5

Sélection bouton Suivant dans la fenêtre ci-dessus vous amène à la fenêtre de confirmation ci-dessous après l'installation de votre base de données de services d'application pour ASP.NET.Finally cliquez sur Terminer.

enter image description here

Étape 6

Vous voyez installé la base de données des services ASPNET prêt à l'emploi dans votre application ASP.NET enter image description here

0

J'ai eu les mêmes problèmes que c'est mon première fois que vous travaillez avec l'adhésion à asp.net. Si vous définissez le <roleManager Enabled="False" />, vous serez en mesure de passer à la création d'utilisateurs. Je pense ici, mais je pense qu'un fournisseur supplémentaire dans le web.config pour le AspNetSqlRoleProvider et lui donnant une chaîne de connexion qui pointe vers la base de données de services ASP avec un utilisateur qui est configuré pour accéder à des informations de gestion de rôle sur le côté SQL (voir les propriétés de l'utilisateur sql pour les "schémas appartenant à cet utilisateur" et "l'appartenance au rôle de base de données") permettra à l'outil d'entrer dans la base de données correctement.

Vous utilisez Windows ou l'authentification SQL sur votre SQL Server?

PS -

Plus je lis et comprends la réponse de Zhaph, plus je l'aime. Il a donné un lien vers le schéma msdn pour l'élément AspNetSqlRoleProvider (ne soyez pas dupé par Microsoft en disant que le document n'existe pas, sélectionnez simplement une version appropriée dans le menu déroulant "autres versions").

Mise à jour J'ai fait une mauvaise chose en affichant ici avant de tester réellement ce que j'écrivais, mais je ne SUIVREZ et en ajoutant ce qui suit à la web.config m'a permis à la fois les utilisateurs et continuer l'édition ajouter/gérer les rôles .

<roleManager enabled="true"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlRoleProvider" 
     type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     connectionStringName="MyConnectionString"/> 
    </providers> 
</roleManager> 

comme je l'ai mentionné plus tôt, l'utilisateur spécifié dans ma chaîne de connexion nécessaire les propriétés d'accès aspnet_Roles ainsi que l'accès des aspnet_Membership à moins que vous utilisez integrated security=true avec le <identity impersonate="true" userName="windowsUser" password="winUsrPassword" /> auquel cas vos fenêtres l'utilisateur a besoin de ces propriétés.