Acabo de eliminar un VS 2012 junto con ASP.NET 4.5 y MVC 4.0 y estaba pateando los neumáticos con una aplicación de muestra y encontré que la autenticación de formularios funciona a la perfección con ASP.NET 4.0/MVC 3 ya no parece funcionar con la última versión.La actualización a autenticación de formularios ASP.NET 4.5/MVC 4 falla
Cuando hago una llamada a la función de Inicio de sesión en el controlador de acción, la llamada falla WebSecurity.Login:
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);
}
he reemplazado este código con el equivalente en mi fuente de VS 2010, y que también falla (utilizando la función FormsAuthentication.Authenticate ahora obsoleta).
Mi pregunta es: ¿Alguien ha portado una aplicación MVC3 a MVC4 y ha encontrado una solución a este problema? Estoy usando IIS Express, así que supongo que puede estar causando algún problema de alguna manera, pero si tienes alguna idea, te agradecería.
copié mi configuración de mi trabajo asp.net aplicación 4/MVC3 de la siguiente manera, pero sin suerte (esto es las partes pertinentes):
<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 - gracias por señalar ese artículo. Noté que muchos comentarios sobre el artículo mencionaban que los nuevos proveedores no eran simples, y que no existe una ruta de migración sin problemas si desea convertir membresías/roles existentes al nuevo esquema. Me parece que si bien trataron de simplificar un sistema complejo, lo han hecho aún más, y simplemente probando lo nuevo haciendo un cambio rápido a la web. Concontiene resultados en tablas nuevas que no funcionan con el sistema. configuración previa. ¡Tengo más para aprender sobre esto seguro! –