2014-10-11 58 views
0

我想在web.config中定義兩個配置文件提供程序。一個使用外部服務與自己的數據庫,一個連接到當前應用程序的數據庫:C#在多個.NET配置文件提供程序之間切換

<profile defaultProvider="LocalProfileProvider"> 
<providers> 
    <clear /> 
    <add name="LocalProfileProvider" ... /> 
    <add name="ExternalProfileProvider" ... /> 
</providers> 

我假設「LocalProfileProvider」將默認使用,但我有一些情況下,當我需要使用「ExternalProfileProvider」。我看到,我可以在ProfileManager引用特定的提供者,像這樣:

ProfileManager.Providers["ExternalProfileProvider"] 

但我沒有看到我怎麼能告訴應用程序使用特定的提供,讓我保存在其他一些配置文件數據系統爲當前用戶。是否可以定義兩個配置文件提供程序,然後指定在代碼中的特定位置使用哪一個來保存特定的屬性?

回答

0

想通了...... very simple really,但我的谷歌搜索也沒有露面,我需要具體的答案:

SqlProfileProvider p = (SqlProfileProvider)Profile.Providers["ExternalProfileProvider"]; 
SettingsPropertyValueCollection pvalues = p.GetPropertyValues(Profile.Context, ProfileBase.Properties); 

pvalues["FirstName"].PropertyValue = "Bob"; 
pvalues["LastName"].PropertyValue = "Bobertson"; 


p.SetPropertyValues(Profile.Context, pvalues); 

附加編輯:

如果你想訪問和編輯不同用戶的個人資料,一定要使用適當的配置文件,如下所示:

ProfileCommon userProfile = Profile.GetProfile("bob"); 
SqlProfileProvider p = (SqlProfileProvider)userProfile.Providers["ExternalProfileProvider"]; 
SettingsPropertyValueCollection pvalues = p.GetPropertyValues(userProfile.Context, ProfileBase.Properties); 

pvalues["FirstName"].PropertyValue = "Bob"; 
pvalues["LastName"].PropertyValue = "Bobertson"; 

p.SetPropertyValues(userProfile.Context, pvalues); 
1

這節省了我的遺憾屁股..但我不得不我們Ë

DefaultProfileProvider p (DefaultProfileProvider)UserProfile .... 

代替的SqlProfileProvider

相關問題