Gå til innhold

ASP: Problem med innlogging til ASP.NET Membership services database


Anbefalte innlegg

Jeg har gjort en del arbeid på en eksisterende applikasjon, og til applikasjonen hører det to databaser.

 

En ASP.NET Membership services database som lagrer login detaljer, og en database som lagrer applikasjonsspesifikke data.

 

Jeg gjenopprettet begge databasene lokalt, og hadde ingen problemer med å koble til dem med integrated security=SSPI i connectionstring under utviklingen (fra Visual Studio 2008).

 

Jeg har publisert løsningen til IIS på prod-serveren, og gjenopprettet begge databasene.

 

Problemet mitt er at jeg ikke får koblet meg til ASP.NET Membership services databasen. Jeg får logget inn i management studio med brukeren jeg har i connectionstrings, og får kjørt spørringer på begge databasene.

 

Jeg har følgende connectionstrings:

 

<add connectionString="Server=****\**;Database=FNAuthentication;User ID=***;Password=***" name="AuthenticationConnectionString" />
<add connectionString="Server=****\**;Database=AppDB;User ID=***;Password=***" name="AppDBConnString" />

 

Ved tilkobling får jeg følgende feilmelding:

[sqlException (0x80131904): Cannot open database "FNAuthentication" requested by the login. The login failed.
Login failed for user '***'.]
  System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +6244425
  System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +245
  System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2811
  System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +53
  System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +248
  System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +6260362
  System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +6260328
  System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +354
  System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +703
  System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +54
  System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +6261592
  System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +81
  System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1657
  System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +88
  System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6265031
  System.Data.SqlClient.SqlConnection.Open() +258
  System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +82
  System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +3986458
  System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +3053172
  System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +213
  System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +164
  System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +75
  System.Web.UI.WebControls.Login.AttemptLogin() +152
  System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +124
  System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +70
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981

 

Feilmeldingen får meg til å tro at det er problemer med rettigheter, men jeg vet ikke hvor/hva jeg skal gjøre endringer på.

 

Jeg laget for sikkerhetsskyld en enkel test-app for å sjekke tilkoblingene:

namespace TestConnStrings
{
   public partial class _Default : System.Web.UI.Page
   {
       protected void Page_Load(object sender, EventArgs e)
       {
           using (SqlConnection testConn0 = new SqlConnection())
           {
               testConn0.ConnectionString = ConfigurationManager.ConnectionStrings["AuthenticationConnectionString"].ConnectionString;
               try
               {
                   testConn0.Open();
               }
               catch(Exception ex)
               {
                   Response.Write(ex.ToString());
               }

               if (testConn0.State == System.Data.ConnectionState.Open)
               {
                   Response.Write("AuthenticationConnectionString works");
                   testConn0.Close();
               }   
           }
           Response.Write("<br /><br /><br /><br /><br />");
           using (SqlConnection testConn1 = new SqlConnection())
           {
               testConn1.ConnectionString = ConfigurationManager.ConnectionStrings["AppDBConnString"].ConnectionString;
               try
               {
                   testConn1.Open();
               }
               catch (Exception ex)
               {
                   Response.Write(ex.ToString());
               }

               if (testConn1.State == System.Data.ConnectionState.Open)
               {
                   Response.Write("AppDBConnString works");
                   testConn1.Close();
               }
           }
       }
   }
}

 

AppDBConnString fungerer, AuthenticationConnectionString feiler.

 

Setter stor pris på all hjelp!

 

Mvh

 

Francis

Lenke til kommentar
Videoannonse
Annonse

Har du testet å logge på prodmaskinene med eksplisitt brukernavn/passord som i connectionstringen?

(Og prøv også med "Trusted_Connection=False;" med i connection string'en.)

 

Legg merke til at dette ikke er syntax for å logge på med en windowsbruker, men er SQL auth på SQL-serveren.

Klassiker er hvis dette er brukernavn/passord for en bruker på serveren - det er i så fall feil syntax.

 

Edit: Dvs - hvis du ønsker å kjøre som en spesifikk windows-bruker, så sett rettigheter via brukeren du har i Application Pool, og bruk SSPI.

Endret av Trondster
Lenke til kommentar

Takk for svar!

 

Har du testet å logge på prodmaskinene med eksplisitt brukernavn/passord som i connectionstringen?

 

Er ikke helt sikker på hva du mener. Maskinen jeg er innlogget på er logget på med datamaskinnavn/brukernavn + passord (windows login).

 

Brukeren jeg har i connectionstring er en bruker på SQL Serveren til SQL Authentication (som sa, som forøvrig ikke fungerer i connectionstring opp mot FNAuthentication heller. Lokalt kan jeg koble meg opp med både SSPI og sa brukeren).

 

Og prøv også med "Trusted_Connection=False;" med i connection string'en.

 

Jeg testet med denne connectionstringen:

<add connectionString="Server=****\**;Database=FNAuthentication;User ID=***;Password=****;Trusted_Connection=False" name="AuthenticationConnectionString" />

 

Og fikk samme feilmelding:

 

Cannot open database "FNAuthentication" requested by the login. The login failed.
Login failed for user '***'.

 

Det rare er at brukeren fungerer med den andre databasen.

 

Mvh

 

Francis :)

Endret av :Francis:
Lenke til kommentar

Fungerer den ene databasen og ikke den andre burde det være enkelt å feilsøke. Dobbeltsjekk servernavn, databasenavn, brukernavn og passord. Verifiser at du manuelt kan logge på begge SQL-databaser med SQL Authentication og brukernavn/passord.

 

En klassiker er at SQL Authentication ikke er skrudd på for databaseserveren/databasen. Men - dette burde du kunne finne ut ved å logge på serveren med nevnte brukernavn/passord.

 

 

Doh-spørsmål - du har ikke noe spesialtegn i passordet? Ampersand, æøå eller lignende, så det kan være htmlenkoding-issues, når det tross alt her er i en XML-fil?

Endret av Trondster
Lenke til kommentar

Takk igjen!

 

Det er samme brukeren jeg bruker i begge tilkoblingene.

 

Jeg får logget inn i management studio med brukeren (SQL Server Authentication), og får kjørt spørringer på begge databasene. Problemet oppstår bare når jeg logger på fra ASP .NET.

 

Det er ingen sære tegn i passord/brukernavn, og jeg vet at kombinasjonen brukernavn/passord fungerer ettersom AppDBConnString fungerer. Begge databasene er på samme server.

 

Mvh

 

Francis :)

Lenke til kommentar

Takk!

 

Forsøk å kalle connection string'en din noe annet - det ligner et "standard" ord.

 

Den heter egentlig FNAuthenticationConnectionString, og fungerer fortreffelig lokalt. Jeg har bare prøvd å "anonymisere" så mye som mulig.

 

Eventuelt - prøv den andre connection stringen som fungerer lagt inn to ganger.

 

Vil ikke fungere, da det blir en kobling mot feil database.

 

Francis :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...