0

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

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

我假设默认情况下将使用“LocalProfileProvider”,但在某些情况下我需要使用“ExternalProfileProvider”。我看到我可以像这样在 ProfileManager 中引用特定的提供者:

ProfileManager.Providers["ExternalProfileProvider"]

但是我没有看到如何告诉应用程序使用这个特定的提供程序来允许我在其他系统中为当前用户保存一些配置文件数据。是否可以定义两个配置文件提供程序,然后指定您在代码中的特定点使用哪一个来保存特定属性?

4

2 回答 2

1

这挽救了我的遗憾..但我不得不使用

DefaultProfileProvider p (DefaultProfileProvider)UserProfile ....

而不是 SqlProfileProvider

于 2015-07-04T19:08:47.193 回答
0

想通了......真的很简单,但我的谷歌搜索从未找到我需要的具体答案:

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);
于 2014-10-13T14:51:11.857 回答