[英].Net framework 4.8 User Secret - Accessing ConnectionString in Membership Provider
[英]Changing .net Membership ConnectionString
我需要更改.net Membership API使用的连接字符串。 基本上,API在您首次调用时从app.config加载连接字符串。
有谁知道我如何动态地告诉API使用其他连接字符串?
<system.web>
<membership defaultProvider="SqlProvider">
<providers>
<clear />
<add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MySqlConnection"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
passwordFormat="Hashed" maxInvalidPasswordAttempts="6545"
minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="RoleProvider">
<providers>
<add name="RoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="MySqlConnection" />
</providers>
</roleManager>
</system.web>
<connectionStrings>
<add name="MySqlConnection"
connectionString=".."
providerName="System.Data.SqlClient" />
</connectionStrings>
编辑:
解决-> 通过代码动态设置成员资格的连接字符串
您需要创建自己的自定义成员资格提供程序代码(这听起来并不复杂)。 您需要提供一个从SqlMembershipProvider继承的类,然后添加一个重写的初始化方法:
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
// Get your new connnection string name and then overwrite the base here:
config.Item["connectionStringName"] = "MyNewConnectionStringName";
base.Initilize(name, config);
}
然后,在web.config中,对于“成员资格”部分,您需要将新的自定义类型放在“ type”属性中。 这要求您从ConnectionStrings应用程序部分中获取新的连接字符串。
根据您的要求,您可能还需要覆盖RoleProvider和ProfileProvider。
PS代码可以从VB.net快速快速地翻译出来,如果存在一些语法错误,我们深表歉意。
在web.config中,您必须完全限定您的自定义引用,例如(从注释中查询):
<add name="AspNetSqlMembershipProvider"
type="zTester.tempMemebership, zTester, Version=1.0.0.0, Culture=neutral" ... etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.