C# 我面对的是;您的登录尝试未成功";请再试一次。实现自定义成员身份时出错
我对应用程序的要求是为每个客户端提供单个应用程序和多个数据库。所以我实现了自定义成员身份来实现这一点。首先,我根据客户机db的连接字符串检查用户属于哪个客户机。我动态设置连接字符串并验证用户 这是我的网页配置:C# 我面对的是;您的登录尝试未成功";请再试一次。实现自定义成员身份时出错,c#,asp.net,custom-membershipprovider,multi-database,C#,Asp.net,Custom Membershipprovider,Multi Database,我对应用程序的要求是为每个客户端提供单个应用程序和多个数据库。所以我实现了自定义成员身份来实现这一点。首先,我根据客户机db的连接字符串检查用户属于哪个客户机。我动态设置连接字符串并验证用户 这是我的网页配置: <membership defaultProvider="EPMembershipProvider" userIsOnlineTimeWindow="20"> <providers> <clear /> <add
<membership defaultProvider="EPMembershipProvider" userIsOnlineTimeWindow="20">
<providers>
<clear />
<add name="EPMembershipProvider" type="EfficientPeople.GlobalClasses.EPMembershipProvider" connectionStringName="DBEntitiesConnectionString" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="25" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/" />
<!--<add name="EPMembershipProvider" type="EfficientPeople.GlobalClasses.EPMembershipProvider, EfficientPeople" connectionStringName="DBEntitiesConnectionString" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="25" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/" />-->
</providers>
</membership>
<profile>
<providers>
<clear />
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DBEntitiesConnectionString" applicationName="/" />
</providers>
</profile>
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="DBEntitiesConnectionString" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
当我在本地运行我的应用程序时,当我使用客户端[DB1]登录时,-User1成功登录。但当我注销并尝试使用客户机B[DB2]User2登录时,它会抛出以下错误消息:
您的登录尝试未成功
当我再次运行应用程序时&反之亦然,即使用客户机B[DB2]-User2登录成功,但当我在同一个应用程序运行中尝试使用客户机A[DB1]-User1时,抛出相同的错误。但是我可以使用客户机B[DB2]用户登录
当我使用断点进行调试时,它会抛出错误
ValidateUser(字符串用户名、字符串密码)
方法。ValidateUser方法返回false
我尝试了很多选择,但都不管用。请引导我完成。问题在于SqlMembership的初始化方法。当用户第一次登录时,它调用initialize方法&设置连接字符串。当另一个用户尝试登录时,它使用相同的连接字符串。这就是为什么它不能验证。如果我们尝试调用SqlMembershipProvider的Initialize方法,它会抛出一个异常“InvalidOperationException:成员资格提供程序已初始化” 因此,我创建了自定义成员身份的对象&当我使用新创建的对象调用成员身份验证方法时,我能够设置连接字符串
EPMembershipProvider myProvider = new EPMembershipProvider();
string configPath = "~/web.config";
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
MembershipSection section = (MembershipSection)config.GetSection("system.web/membership");
ProviderSettingsCollection settings = section.Providers;
NameValueCollection membershipParams = settings[section.DefaultProvider].Parameters;
myProvider.Initialize("EPMembershipProvider", membershipParams);
bool Status = myProvider.ValidateUser(UserName, Password);
它成功地工作了。Thanx to shrin all…:-) 您是否可以包含ValidateUser()函数,因为这是引发错误的函数?我正在使用Membership类的方法进行验证:bool Status=Membership.ValidateUser(用户名、密码);它存在于:namespace System.Web.Security public static class Membership{public static bool ValidateUser(字符串用户名,字符串密码);}中。您可以检查用户是否在登录尝试之间进行了更改验证,或者它是否仍然停留在初始用户.Thanx上以获得答复。用户在登录尝试之间进行更改&我还检查了成员身份使用的连接字符串是否与该用户关联。此方法在尝试与其他数据库用户登录时返回false。但是,当应用程序运行时,首先登录的用户和同一数据库中的所有其他用户都在运行时,它可以正常工作。如果会员被锁定、未获得批准或提供了错误的凭据,则Membership.ValidateUser将返回false。我想你得看看这三个选项中哪一个适用于你的案子
EPMembershipProvider myProvider = new EPMembershipProvider();
string configPath = "~/web.config";
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
MembershipSection section = (MembershipSection)config.GetSection("system.web/membership");
ProviderSettingsCollection settings = section.Providers;
NameValueCollection membershipParams = settings[section.DefaultProvider].Parameters;
myProvider.Initialize("EPMembershipProvider", membershipParams);
bool Status = myProvider.ValidateUser(UserName, Password);