2014-01-14 26 views
1

我需要更改.net成員資格API使用的連接字符串。 基本上API在您第一次調用它時從app.config加載連接字符串。更改.net成員身份ConnectionString

有誰知道我該如何動態地告訴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> 

編輯:

解決 - >Set connection string of membership dynamically from code

回答

0

您需要創建自己的自定義成員提供程序代碼(這並不像聽起來那麼複雜)。您需要提供從SqlMembershipProvider的繼承一個類,然後添加一個重寫的initialise方法:

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,爲會員節,你需要把你的新的自定義類型在「類型'屬性。這要求您從ConnectionStrings應用程序部分獲取新的連接字符串。

您可能還需要根據您的要求重寫RoleProvider和ProfileProvider。

P.S.從VB.net快速翻譯代碼,如果有幾個語法錯誤,我們深表歉意。


在web.config中,您必須完全符合您的自定義的參考,像(查詢從評論):

<add name="AspNetSqlMembershipProvider" 
type="zTester.tempMemebership, zTester, Version=1.0.0.0, Culture=neutral" ... etc 
+0

創建新的類,但它不承認propertie「項目」在config或'Initilize' – susparsy

+0

你是否繼承了SqlMembershipProvider? – Paddy

+0

Yea添加了代碼,我在Item屬性應該存在的文檔中看到,我忘記了什麼:/ – susparsy