プログラム的にサイトをフォローしますが、エラーを受け取ります

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/74345

  •  10-12-2019
  •  | 
  •  

質問

私は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();
ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top