visual tutorial studio net mvc asp c# asp.net asp.net-mvc asp.net-membership

c# - tutorial - membership asp net visual studio 2015



Para llamar a este método, la propiedad "Membership.Provider" debe ser una instancia de "ExtendedMembershipProvider" (4)

Actualmente, cada vez que intento registrar un usuario o iniciar sesión utilizando los servicios de membresía predeterminados integrados en ASP.Net MVC4 en mi proveedor de host DiscountASP, recibo el error

Para llamar a este método, la propiedad "Membership.Provider" debe ser una instancia de "ExtendedMembershipProvider".

Esto no ocurre localmente

Aquí está mi InitializeSimpleMembershipAttribute.cs :

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute { private static SimpleMembershipInitializer _initializer; private static object _initializerLock = new object(); private static bool _isInitialized; public override void OnActionExecuting(ActionExecutingContext filterContext) { // Ensure ASP.NET Simple Membership is initialized only once per app start LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock); } private abstract class SimpleMembershipInitializer { protected SimpleMembershipInitializer() { Database.SetInitializer<UsersContext>(null); try { using (var context = new UsersContext()) { if (!context.Database.Exists()) { // Create the SimpleMembership database without Entity Framework migration schema ((IObjectContextAdapter)context).ObjectContext.CreateDatabase(); } } WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); } catch (Exception ex) { throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex); } } } }

Aquí hay una captura de pantalla completa del error:

¿Alguien sabe cómo puedo solucionar esto o saber un artículo que lo aborde?


Hizo los pasos anteriores, pero eso no ayudó. Lo que ayudó fue el cambio de web.config:

<dependentAssembly> <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="WebMatrix.WebData" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.0.0.0" /> </dependentAssembly>


Intente cambiar la función de inicio de sesión en AccountController.cs

// // POST: /Account/Login [AllowAnonymous] [HttpPost] public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName, model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } // If we got this far, something failed, redisplay form return View(model); }


Intente configurar el seguimiento en su web.config dentro del nodo <system.web> :

<roleManager enabled="true" defaultProvider="SimpleRoleProvider"> <providers> <clear /> <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" /> </providers> </roleManager> <membership defaultProvider="SimpleMembershipProvider"> <providers> <clear /> <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> </providers> </membership> <sessionState mode="InProc" customProvider="DefaultSessionProvider"> <providers> <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" /> </providers> </sessionState>

Parece que SimpleMembership no se reconoce cuando vas a usarlo.

Además, puede valer la pena incluir, la biblioteca WebMatrix.webData se puede instalar a través de NuGet:

PM> Install-Package Microsoft.AspNet.WebPages.WebData


Tuve el mismo error, pero fueron 100% referencias para mí. He tenido problemas para conseguir que WebMatrix.WebSecurity funcione varias veces ... cada vez es porque no creé el proyecto usando la plantilla de Internet de MVC 4.

La clave es que las referencias y las configuraciones funcionan de manera predeterminada en la plantilla, así que simplemente recree su proyecto y estará bien.

Mi solución es: 1. Copia de seguridad de mi proyecto en otra carpeta. 2. Verifique todos los archivos 3. Cree un nuevo proyecto de Internet MVC 4, con el mismo nombre. 4. Copie + Pegue (sobrescriba) el proyecto original. 5. Agregue las referencias que faltan, las rutas modificadas, las configuraciones .config / conexiones de base de datos.