Une erreur se produit lorsqu'un objet utilisateur d'appartenance personnalisée est créé. Le message d'erreur Détails est comme ci-dessous.ASP.NET Problème d'appartenance personnalisée avec l'option d'obtention de l'appartenance personnalisée-Aucun constructeur sans paramètre défini pour cet objet
Erreur:
System.Configuration.ConfigurationErrorsException was caught
Message=No parameterless constructor defined for this object. (D:\Projects\Sample\SampleMembership\web.config line 23)
Source=System.Web
BareMessage=No parameterless constructor defined for this object.
Filename=D:\Projects\Sample\SampleMembership\web.config
Line=23
StackTrace:
at System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType)
at System.Web.Configuration.ProvidersHelper.InstantiateProviders(ProviderSettingsCollection configProviders, ProviderCollection providers, Type providerType)
at System.Web.Security.Membership.InitializeSettings(Boolean initializeGeneralSettings, RuntimeConfig appConfig, MembershipSection settings)
at System.Web.Security.Membership.Initialize()
at System.Web.Security.MembershipAdapter.get_Providers()
at System.Web.Security.MembershipUser..ctor(String providerName, String name, Object providerUserKey, String email, String passwordQuestion, String comment, Boolean isApproved, Boolean isLockedOut, DateTime creationDate, DateTime lastLoginDate, DateTime lastActivityDate, DateTime lastPasswordChangedDate, DateTime lastLockoutDate)
at Asys.CatalogueViewer.Membership.CustomMembershipUser..ctor(String providername, String username, Object providerUserKey, String email, String passwordQuestion, String comment, Boolean isApproved, Boolean
Mon code personnalisé de classe MembershipUser est comme ci-dessous.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
public class CustomMembershipUser : MembershipUser
{
private string _webSite;
public string WebSite
{
get { return _webSite; }
set { _webSite = value; }
}
public CustomMembershipUser()
{
}
public CustomMembershipUser(string providername,
string username,
object providerUserKey,
string email,
string passwordQuestion,
string comment,
bool isApproved,
bool isLockedOut,
DateTime creationDate,
DateTime lastLoginDate,
DateTime lastActivityDate,
DateTime lastPasswordChangedDate,
DateTime lastLockedOutDate,
string webSite) :
base(providername,
username,
providerUserKey,
email,
passwordQuestion,
comment,
isApproved,
isLockedOut,
creationDate,
lastLoginDate,
lastActivityDate,
lastPasswordChangedDate,
lastLockedOutDate)
{
this.WebSite =webSite;
}
}
Erreur lance lorsque je tente de créer un objet en utilisant au-dessus de la classe utilisateur personnalisée (code de création d'objets est comme ci-dessous)
CustomMembershipUser membershipUser = new CustomMembershipUser(this.Name,
username,
Guid.Parse(userID.ToString()),
email,
passwordQuestion,
comment,
isApproved,
isLockedOut,
creationDate,
lastLoginDate,
lastActivityDate,
lastPasswordChangedDate,
lastLockedOutDate, "ss");
configuration de configuration Web en est comme ci-dessous.
<configuration>
<connectionStrings>
<add name="ModelContainer" connectionString="metadata=res://*/Data.Model.csdl|res://*/Data.Model.ssdl|res://*/Data.Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=GET2CODE\GET2CODE;Initial Catalog=CatalogueViewer;User Id=sa;Password=hammer;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
<system.web>
<machineKey validationKey= "23729FFE7E16B1DD03D3BC8B45280254DA09CE2ABF5C1AC2FFD5DA04AB2521DBD7E6A8EFBE49C63DA2DA55708545A4562C75E8495415CB7B0456720652A9F160"
decryptionKey= "D643C94989E6D3A76E265AA4A565108FA727DBC7AB87EDE85F578DC78A8E407C" validation="SHA1" decryption="AES"/>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation>
<authentication mode="Forms" >
<forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
</authentication>
<membership defaultProvider="CustomMembershipProvider" userIsOnlineTimeWindow="15">
<providers >
<clear/>
<add name="CustomMembershipProvider" type="ASys.Membership.CustomMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" passwordFormat="Encrypted" connectionStringName="ModelContainer" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/>
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>
</providers>
</roleManager>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
S'il vous plaît aidez-moi à résoudre ce problème
Les paramètres de web.config ne sont pas affichés, il serait très utile de les voir. En plus de CustomMembershipUser, utilisez-vous également un fournisseur d'appartenances personnalisé? Pourriez-vous indiquer quelle est la valeur de "this.Name" lorsque vous appelez le constructeur CustomMembershipUser? –
Pourriez-vous confirmer que le type ASys.Membership.CustomMembershipProvider a un constructeur public et sans paramètre et que lorsque vous appelez le constructeur de CustomMembershipUser, this.Name est égal à "CustomMembershipProvider"? –
Merci pour votre réponse. CustomMembershipProvider n'a pas de constructeur sans paramètre. This.Name is value est égal à vide string.Updated problème avec le fichier web.config complet. – Ajith