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: * * * * * *
Ah, so was Sie sagen, ist, dass die Tische unter einem anderen Schema erstellt bekommen, das Windows-Benutzerkonto anstelle des dbo-Konto. –
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. –