2012-06-22 12 views
8

Próbuję włączyć logowanie przy użyciu domyślnego szablonu MVC 4 RC. Zrobiłem to w taki sam sposób, jak w MVC 3, Aspnet_regsql.exe -> serwer SQL. Następnie napisałem ciąg połączenia do serwera SQL.MVC 4 RC - Aspnet_regsql.exe

Gdy próbuję zarejestrować nowego użytkownika uzyskać to:

Server Error in '/' Application. 

Invalid column name 'ApplicationId'. 
Invalid column name 'UserName'. 
Invalid column name 'ApplicationId'. 
Invalid column name 'UserId'. 
Invalid column name 'UserName'. 
Invalid column name 'IsAnonymous'. 
Invalid column name 'LastActivityDate'. 

błąd w AccountController:

   Line 85: // Attempt to register the user 
       Line 86: MembershipCreateStatus createStatus; 
Error here -> Line 87: Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus); 
       Line 88: 
       Line 89: if (createStatus == MembershipCreateStatus.Success) 

Próbowałem google ten błąd, ale nie ma szczęścia do tej pory. Czy jest jakiś inny sposób powinienem to zrobić w MVC 4?

+0

Czy znalazłeś rozwiązanie? Jeśli uruchomię profilera SQL, instrukcje SQL wygenerowane przez 'DefaultMembershipProvider' używają różnych nazw tabel niż' aspnet_regsql' ('Applications' zamiast' aspnet_Applications' i 'Users' zamiast' aspnet_Users'). Jednym z rozwiązań jest zmiana nazw tabel w celu dopasowania do dostawcy członkostwa lub napisanie dostawcy niestandardowego członkostwa dla MVC. –

Odpowiedz

10

Otrzymałem ten sam błąd, ponieważ korzystałem z tabel członkowskich z wersji aspnet_regsql.exe w wersji 2.x. Uruchomiłem plik wykonywalny aspnet_regsql.exe w folderze wersji 2.x i odinstalowałem tabele. Następnie, dzięki nowym uniwersalnym dostawcom, nie będziesz już musiał używać powyższego pliku wykonywalnego, tabele są tworzone po pierwszym połączeniu.

Ten artykuł zawiera bardziej szczegółowe informacje na temat różnic między starą wersją aspnet_Memembership a Universal Provider.

Stronger Password Hasing Net

Kluczowe punkty z artykułu:

Po pierwsze, nie ma nie więcejaspnet_regsql, wystarczy upewnić się, że ciąg połączenia jest ustawiona, a konto ma prawa DBO (NIE martwić się, nie musi pozostać w ten sposób), a następnie uruchomić aplikację i spróbować wykonać dowolne działanie, które powinno spowodować, że dostawca członkostwa trafi do DB (np. zalogować się - nie ma znaczenia, że ​​nie ma konta).

To wszystko, co do niego należy.

+0

"Po pierwsze, nie ma już więcej aspnet_regsql, wystarczy ustawić ciąg połączenia ..." i wszystko działało idealnie :) Nie ma już narzędzia regsql! Bardzo dziękuję :) – judehall

+0

Problem z tym, że nie istnieje odpowiednik aspnet_regsql.exe dla nowej struktury System.Web.Providers, polega na tym, że nie mogę utworzyć schematu db, a następnie zasiać członkostwo z administratorami i rolami PRZED zezwoleniem użytkownikom publicznym na rejestrację. Zbudowałem MvcInstaller (NuGet i github) i używa on aspnet_regsql.exe do zainstalowania systemu Membership dla administratorów. To nie pozwala mi aktualizować mojego komponentu dla nowego systemu. To frustrujące. – Kahanu

Powiązane problemy