0

web.config で 2 つのプロファイル プロバイダーを定義しようとしています。独自のデータベースを持つ外部サービスを使用するものと、現在のアプリケーションのデータベースに接続するもの:

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

「LocalProfileProvider」がデフォルトで使用されると想定していますが、「ExternalProfileProvider」を使用する必要がある場合があります。次のように、ProfileManager で特定のプロバイダーを参照できることがわかりました。

ProfileManager.Providers["ExternalProfileProvider"]

しかし、この特定のプロバイダーを使用して、現在のユーザーのプロファイル データを他のシステムに保存できるようにアプリケーションに指示する方法がわかりません。2 つのプロファイル プロバイダーを定義し、コードの特定のポイントでどちらを使用して特定のプロパティを保存するかを指定することはできますか?

4

2 に答える 2

1

これは私の残念なお尻を救いました..しかし、私は使用しなければなりませんでした

DefaultProfileProvider p (DefaultProfileProvider)UserProfile ....

SqlProfileProvider の代わりに

于 2015-07-04T19:08:47.193 に答える
0

それを理解しました...本当に非常に単純ですが、私のGoogle検索では、必要な特定の回答が得られませんでした:

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 に答える