2011-03-30 6 views
3

J'ai configuré un site Web de prévisualisation trivial pour un client qui a besoin d'une protection de base par mot de passe. J'utilise l'authentification par formulaires avec les informations d'identification spécifiées dans web.config.Désactiver le fournisseur d'appartenances SQL (authentification par formulaire ASP.Net)

Tout works fine on my box(derniers mots célèbres)

Cependant, quand je déploiement sur un site de production en cours d'exécution Win2008, le code d'authentification tente d'ouvrir une base de données SQL Server (je ne référence à quoi que ce soit SQL dans web.config). Comment puis-je désactiver ce comportement pour que l'authentification soit basée sur les informations d'identification que j'ai entrées dans web.config?

Exception dans le journal des événements

Impossible de se connecter à la base de données SQL Server. at System.Web.Management.SqlServices.GetSqlConnection (Serveur de chaîne, Utilisateur de chaîne, Mot de passe de chaîne, Booléen approuvé, Chaîne connectionString) at System.Web.Management.SqlServices.SetupApplicationServices (Serveur de chaîne, Utilisateur de chaîne, Mot de passe de chaîne, Booléen approuvé , String connectionString, String base de données, String dbFileName, fonctions SqlFeatures, installation booléenne) à System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile (String fullFileName, String dataDir, String connectionString) à System.Web.DataAccess.SqlConnectionHelper.EnsureSqlExpressDBFile (String connectionString) ... à System.Data.SqlClient.SqlConnection.Open() à System.Web.Management.SqlServices.GetSqlConnection (String server, String utilisateur, String mot de passe, Boolean approuvé, String connectionString)
http://my.site.com/Login.aspx?ReturnUrl=/

web.config (partie pertinente)

 <system.web> 
     <compilation targetFramework="4.0" /> 
    <authentication mode="Forms"> 
     <forms name="appNameAuth" path="/" loginUrl="Login.aspx" protection="All" timeout="30"> 
     <credentials passwordFormat="SHA1"> 
      <user name="me" password="SHA1OfMyPassword" /> 
     </credentials> 
     </forms> 
    </authentication> 
    <authorization> 
     <deny users="?"/> 
     <allow users="me" /> 
    </authorization>  

    </system.web> 

Répondre

11

Il se trouve que, sur la machine de production, le fournisseur d'appartenances SQL a été définie dans machine.config. Je ne pense pas que l'équipe ops ait changé quelque chose par rapport à l'installation Windows 2008 par défaut, ce qui est probablement le cas pour cette plate-forme.

Pour supprimer les références à tous les fournisseurs SQL définis à un niveau supérieur comprennent ce qui suit dans votre web.config

<membership> 
    <providers> 
     <clear />  
    </providers> 
</membership> 
<roleManager enabled="false"> 
    <providers> 
     <clear />  
    </providers> 
</roleManager> 
<profile> 
    <providers> 
     <clear />  
    </providers> 
</profile> 
+0

Merci. Cela a répondu à ma question avec l'entrée "enableSimpleMembership" décrite ici: http://stackoverflow.com/questions/12116736/aspnet-role-provider-kicking-in-and-it-shouldnt-be – Josh

+1

La partie manquante de cette solution depuis le lien ci-dessus (12116736) est: dans la section Nigel

Questions connexes