簡體   English   中英

更改.net成員資格ConnectionString

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM