[英]Changing .net Membership ConnectionString
I need to change the connection string that the .net Membership API uses. 我需要更改.net Membership API使用的连接字符串。 Basically the API loads the connection string from app.config on the first time you are calling it. 基本上,API在您首次调用时从app.config加载连接字符串。
Does anyone knows how can I dynamically tell the API to use a different connection string? 有谁知道我如何动态地告诉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>
EDIT: 编辑:
Solved - > Set connection string of membership dynamically from code 解决-> 通过代码动态设置成员资格的连接字符串
You need to create your own custom membership provider code (this is not as complicated as it sounds). 您需要创建自己的自定义成员资格提供程序代码(这听起来并不复杂)。 You need to provide a class that inherits from SqlMembershipProvider, and then add an overriden initialise method: 您需要提供一个从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);
}
Then in your web.config, for the membership section, you need to put your new custom type in the 'type' attribute. 然后,在web.config中,对于“成员资格”部分,您需要将新的自定义类型放在“ type”属性中。 This requires you to get your new connection string from the ConnectionStrings application section. 这要求您从ConnectionStrings应用程序部分中获取新的连接字符串。
You may also need to also override the RoleProvider and the ProfileProvider depending on your requirements. 根据您的要求,您可能还需要覆盖RoleProvider和ProfileProvider。
PS Code quickly translated on the fly from VB.net, apologies if there are a few syntax errors. PS代码可以从VB.net快速快速地翻译出来,如果存在一些语法错误,我们深表歉意。
In the web.config, you must fully qualify your custom reference, something like (query from comments): 在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.