Ich hatte das gleiche Problem. Ich habe es gelöst, indem ich die korrekte Verbindungszeichenfolge in SimpleMembershipInitializer und UsersContext Klasse angegeben habe. Ich benutze ASP.NET MVC4
Es könnte sein, dass Sie bereits bei @ localhost als jemand auf einer anderen Website angemeldet sind, die Sie entwickeln. Und Sie verwenden denselben Authentifizierungscookie (Standard ist .aspxauth). Wenn Sie also CreateOrUpdate aufrufen, versucht es, Ihrem bereits registrierten Profil einen weiteren Berechtigungsnachweis hinzuzufügen. Scheitert aber, weil es nicht in der Datenbank ist.
Um das Problem zu lösen, müssen Sie das Authentifizierungs-Cookie vom Browser löschen und erneut anmelden.
In dieser Zeile bekomme ich eine Ausnahme -
%Vor%System.Web.Security.MembershipCreateUserException: Der angegebene Benutzername ist ungültig.
Die Daten, die in diese gehen, sind
Die Initialisierung funktioniert gut mit
%Vor%Ich kann keine Beispiele finden, warum der Benutzername ungültig ist? Gibt es irgendwo ein Kriterium, das einen korrekten Benutzernamen definiert?
Bei mir ist dieser Fehler in meiner Seed-Überschreibung aufgetreten. Wie nie zuvor angegeben, bezieht sich der nicht vorhandene Benutzername auf die UserProfile-Tabelle. Um es zu beheben, müssen Benutzer und Konto zuerst erstellt werden, bevor das OAuth erstellt wird.
Also, anstelle von meinem Seed überschreiben nur aufrufen:
%Vor%ruft jetzt:
%Vor%Hinweis: Das Null-Passwort bedeutet, dass sich der Benutzer nicht über ein Login-Formular anmelden kann, da das angegebene Passwort niemals null ist. Ich benutze nur OAuth, also ist es kein Problem für mich.
Benutzername sollte auch keinen Platz wie "Max Payne"
habenLaut MSDN ( Ссылка ) kann die Mitgliedschaftsklasse keine Benutzernamen mit einem Komma unterstützen oder null, Leerzeichen sind OK (wie auch nicht ASCII-Zeichen).
Die CreateUser-Methode gibt null zurück, wenn das Passwort eine leere Zeichenfolge oder null ist, Benutzername eine leere Zeichenfolge oder null ist oder ein Komma (,) enthält , passwordQuestion ist nicht null und ist ein leere Zeichenfolge oder passwordAnswer ist nicht null und enthält eine leere Zeichenfolge.
Ich suchte ähnlich nach einer Erklärung dafür. Ich bin mir nicht sicher, ob ich es vollständig verstehe, aber nach dem Experimentieren, Debuggen und Überwachen von Intellitrace-Ereignissen scheint CreateOrUpdateAccount einen Eintrag in der OAuthMembership-Tabelle mit nur Provider, ProviderUserId und UserId zu erstellen oder zu aktualisieren, was durch die Abfrage von [in meinem Fall bestimmt wird ] die UserProfile-Tabelle basierend auf diesem eindeutigen Benutzernamen. Wenn Sie CreateOrUpdateAccount mit einem anderen Anbieter und einer anderen Provider-Benutzer-ID aufrufen, aber denselben Benutzernamen verwenden, sind beide Anbieteranmeldungen mit demselben Benutzerkonto in Ihrer App verknüpft.
Ich musste ein UserProfile hinzufügen, bevor ich den entsprechenden OAuthMembership-Datensatz erstellen / aktualisieren konnte. In der VS-Vorlage sah es etwa so aus:
%Vor%