プログラム的にサイトをフォローしますが、エラーを受け取ります
質問
私はaspxにメソッドを持っています。現在のユーザーが現在のサイトに従っていることを確認するcsファイル。私がULSをチェックするとき、私はこれを受け取ります:
続きを読む""""""""""FollowItem:例外:マイクロソフト.-------SPException:このページのセキュリティ検証が無効です。あなたの中に戻るをクリックしてください Webブラウザ、ページを更新し、再度操作を試してみてください。---> システム。ランタイム。相互運用サービス。COMException:セキュリティ検証 このページは無効です。Webブラウザで戻るをクリックし、更新します ページ、およびあなたの操作を試してみてください また!.0x8102006d
Urlに従うことができませんでした
http://removedlink/
と
マイクロソフトオフィス。サーバー。ソーシャル。SPSocialFollowingManager.フォロー:マイクロソフトオフィス。サーバー。UserProfiles.FollowedContentException:内部エラー :項目に続くことができませんでした Xで マイクロソフトオフィス。サーバー。UserProfiles.続きを読む""""""""""FollowItem(FollowedItem アイテム、ブール値は内部)
私のコードは次のようになります:
protected void ToggleUserFollowSite(object sender, EventArgs e)
{
var spWeb = SPContext.Current.Web;
var currentsite = SPContext.Current.Site;
var currentUser = spWeb.CurrentUser.LoginName;
SPSecurity.RunWithElevatedPrivileges(delegate
{
using (var site = new SPSite(spWeb.Site.ID))
{
using (var web = site.OpenWeb(spWeb.ID))
{
SPServiceContext context = SPServiceContext.GetContext(currentsite);
var profile = new UserProfileManager(context);
var user = profile.GetUserProfile(currentUser);
var followingManager = new SPSocialFollowingManager(user, context);
var actorInfo = new SPSocialActorInfo();
actorInfo.ActorType = SPSocialActorType.Site;
actorInfo.ContentUri = new Uri(web.Url);
followingManager.Follow(actorInfo);
}
}
});
}
私がこれをデバッグするとき、これは私が得る例外です。Follow()メソッド:
{"内部エラーが発生したため、操作が失敗しました。内部 タイプ名:マイクロソフトオフィス。サーバー。UserProfiles.フォローされているコンテンツ例外。内部エラーコード:11."}
どんな種類の助けでも大歓迎です
解決
まず、RunWithElevatedPrivileges委任内で新しく作成されたSPSiteインスタンスとSPWebインスタンスのみを使用する必要があります。コード内の次の行を変更します
SPServiceContext context = SPServiceContext.GetContext(currentsite);
これに:
SPServiceContext context = SPServiceContext.GetContext(site);
もう1つの問題は、ページのセキュリティ検証であり、次のように呼び出す必要があります ValidateFormDigest コードが書き込み操作を実行するため、昇格を実行する前のメソッド。したがって、SPSecurityの前に次の行を追加します。コード内のRunWithElevatedPrivileges:
SPUtility.ValidateFormDigest();