Asp.net C#在多个.NET配置文件提供程序之间切换

Asp.net C#在多个.NET配置文件提供程序之间切换,asp.net,profile-provider,Asp.net,Profile Provider,我试图在我的web.config中定义两个配置文件提供程序。一个将外部服务与自己的数据库一起使用,另一个连接到当前应用程序的数据库: <profile defaultProvider="LocalProfileProvider"> <providers> <clear /> <add name="LocalProfileProvider" ... /> <add name="ExternalProfileProvider"

我试图在我的web.config中定义两个配置文件提供程序。一个将外部服务与自己的数据库一起使用,另一个连接到当前应用程序的数据库:

<profile defaultProvider="LocalProfileProvider">
<providers>
   <clear />
   <add name="LocalProfileProvider" ... />
   <add name="ExternalProfileProvider" ... />
</providers>
但我不知道如何告诉应用程序使用这个特定的提供程序来允许我在其他系统中为当前用户保存一些配置文件数据。是否可以定义两个配置文件提供程序,然后指定在代码的特定点使用哪一个来保存特定属性?

找到了,但我的谷歌搜索从未找到我需要的具体答案:

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);

这救了我的命。。但我不得不使用

DefaultProfileProvider p (DefaultProfileProvider)UserProfile ....
而不是SqlProfileProvider

DefaultProfileProvider p (DefaultProfileProvider)UserProfile ....