2009-06-09 11 views
0

Ich habe keine Antworten vom asp.net Forum erhalten, also dachte ich, ich würde es hier versuchen.Was passiert hinter den Kulissen, wenn Sie aspnet_regsql ausführen?

Ich hatte ein Problem mit einem Client, bei dem Probleme beim Anmelden in unserer Anwendung aufgetreten sind, die sie hosten. Es funktionierte für den ersten Tag oder so, nachdem sie unsere App installiert hatten, aber am nächsten Tag (29.5.2009) brach die Authentifizierung ab. Dann sagten sie, dass es am folgenden Montag zu arbeiten begann, aber nur für ein paar Stunden. Es gab keine Konfigurationsänderungen oder Datenbankänderungen, von denen sie wussten.

Wir konnten das Problem beheben, indem Sie den Befehl aspnet_regsql mit den folgenden Parametern ausführen. Wir hatten überprüft, dass alle "aspnet_" -Tabellen und gespeicherten Prozeduren in der Datenbank waren. Meine Frage ist, wo war die Trennung von unserer App und der Datenbank, wo die Authentifizierung fehlgeschlagen ist, aber wurde nach dem Ausführen dieses Skripts behoben? Der Befehl überschrieb keine der "aspnet_" -Tabellen, da sich alle vorhandenen Benutzer noch in der Datenbank befanden und sie sich erneut mit denselben vorhandenen Anmeldeinformationen anmelden konnten.

aspnet_regsql -E -S <SERVERNAME> -d <DATABASENAME> -A all 

Ein kleiner Hintergrund über unsere App. Dies ist eine .NET 3.5 SP1 ASP.NET-Anwendung, die den Mitgliedschaftsanbieter für die Authentifizierung verwendet. Ich habe die Mitgliedschaftsfunktionen in unserer Datenbank installiert (was ich jetzt bereue). Die Anwendung verwendet eine SQL Server-Anmeldung für die ADO.NET-Verbindung und die Mitgliedschaft-Verbindung. In diesem aktuellen Setup sind die Anmeldeberechtigungen als db_owner für diese Datenbank festgelegt.

Der folgende Eintrag wurde in das Windows-Ereignisprotokoll eingegeben.

Event Type: Information 
Event Source: ASP.NET 2.0.50727.0 
Event Category: Web Event 
Event ID: 1315 
Date: 5/29/2009 
Time: 10:52:04 AM 
User: N/A 
Computer: * * * * * * 
Description: 
Event code: 4005 
Event message: Forms authentication failed for the request. Reason: 
The ticket supplied has expired. 
Event time: 5/29/2009 10:52:04 AM 
Event time (UTC): 5/29/2009 2:52:04 PM 
Event ID: 5ca57075c5464bdfbee4dbaa1365f8d9 
Event sequence: 2 
Event occurrence: 1 
Event detail code: 50202 

Application information: 
    Application domain: 
/LM/W3SVC/1/Root/5500Client-1-128880823233521436 
    Trust level: Full 
    Application Virtual Path: /5500Client 
    Application Path: D:\www\5500Client\ 
    Machine name: * * * * * * 

Antwort

0

Es scheint ein Problem mit der Verwendung der integrierten Windows-Anmeldeinformationen für die Verbindung mit dem SQL Server zu sein. Jede Chance, die Ihr Kunde mit z. das Konto sa oder ein anderes SQL Server-Konto, das über ausreichende Berechtigungen zum Erstellen von Datenbanken und Tabellen verfügt?

aspnet_regsql -S <SERVERNAME> -d <DATABASENAME> -A all -U (login id) -P (password) 

Marc

+0

Ah, so was Sie sagen, ist, dass die Tische unter einem anderen Schema erstellt bekommen, das Windows-Benutzerkonto anstelle des dbo-Konto. –

+0

Nein, aber möglicherweise hat der Windows-Benutzer, den Ihr Kunde verwendet, nicht die erforderlichen Rechte in SQL Server - die Verwendung eines expliziten SQL-Kontos kann in solchen Fällen nützlich sein. –

Verwandte Themen