Ich habe gerade eine VS 2012 zusammen mit ASP.NET 4.5 und MVC 4.0 heruntergekommen und trat die Reifen mit einer Beispielanwendung und fand, dass die Formularauthentifizierung perfekt funktioniert mit ASP.NET 4.0/MVC 3 scheint nicht mehr mit der neuesten Version zu arbeiten.Upgrade auf ASP.NET 4.5/MVC 4 Formulare Authentifizierung schlägt fehl
Wenn ich einen Aufruf an die Login-Funktion im Regler machen, schlägt der WebSecurity.Login Aufruf:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
ich diesen Code mit dem Äquivalent ersetzt habe in meine VS 2010 Quelle, und das auch schlägt fehl (mit der jetzt veralteten FormsAuthentication.Authenticate-Funktion).
Meine Frage ist: Hat jemand eine MVC3 zu MVC4 App portiert und eine Abhilfe für dieses Problem gefunden? Ich benutze IIS Express, also denke ich, dass das irgendwie Probleme verursachen könnte, aber wenn Sie irgendwelche Ideen haben, würde ich es begrüßen.
ich meine Konfiguration von meinem Arbeits asp.net 4/MVC3 App kopiert wie folgt, aber kein Glück (hier ist die relevanten Teile):
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=tcp:sql2k1201.dbprovider.net;Initial Catalog=SQL2012_db;User ID=SQL2012_db_user;Password=dbpassword;" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/>
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<roleManager enabled="true">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
Pranav - danke für den Hinweis auf diesen Artikel. Ich bemerkte, dass viele Kommentare zu dem Artikel erwähnten, dass die neuen Anbieter alles andere als einfach seien, und es gibt keinen reibungslosen Migrationspfad, wenn Sie vorhandene Mitgliedschaften/Rollen in das neue Schema konvertieren möchten. Es scheint mir, während sie vielleicht versucht haben, ein komplexes System zu vereinfachen, haben sie es mehr gemacht, und nur die neuen Sachen ausprobiert, indem sie eine schnelle Änderung an der web.config ergeben, führt zu neuen Tabellen, die nicht mit dem funktionieren vorherige Einrichtung. Ich muss mehr darüber erfahren! –