:Francis: Skrevet 26. juli 2010 Del Skrevet 26. juli 2010 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
Trondster Skrevet 26. juli 2010 Del Skrevet 26. juli 2010 (endret) 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 26. juli 2010 av Trondster Lenke til kommentar
:Francis: Skrevet 26. juli 2010 Forfatter Del Skrevet 26. juli 2010 (endret) 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 26. juli 2010 av :Francis: Lenke til kommentar
Trondster Skrevet 26. juli 2010 Del Skrevet 26. juli 2010 (endret) 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 26. juli 2010 av Trondster Lenke til kommentar
:Francis: Skrevet 26. juli 2010 Forfatter Del Skrevet 26. juli 2010 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
Trondster Skrevet 26. juli 2010 Del Skrevet 26. juli 2010 *Prøver i mørket* Forsøk å kalle connection string'en din noe annet - det ligner et "standard" ord. Eventuelt - prøv den andre connection stringen som fungerer lagt inn to ganger. Lenke til kommentar
:Francis: Skrevet 26. juli 2010 Forfatter Del Skrevet 26. juli 2010 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå