クライアントオブジェクトモデルを使用して特定のニュースフィードアクティビティを無効にする

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

質問

こんにちは、読んでくれてありがとう。私は自分のサイトのボックス外のSharePoint 2010のニュースフィード部分を使用していますが、多くのユーザーに展開する予定です。

私は、現在システム内にある私のサイトをすべて繰り返し、各ユーザーの「アクティビティ」の1つをチェックするコンソールアプリケーションを構築しています。 このリンク (MSDN)次のコードを思いつきます。

Public Class ChangeActivity
'Reference: http://msdn.microsoft.com/en-us/library/ff426883.aspx'


Public Shared Sub ChangeActivityProperties()
    Using siteCol As New SPSite((My.Application.CommandLineArgs(0)))
                Dim context As SPServiceContext = SPServiceContext.GetContext(siteCol)
                Dim profileManager As New UserProfileManager(context)
                Dim profile As UserProfile = profileManager.GetUserProfile("THEDOMAIN\username")
                Dim activityMan As ActivityManager = New ActivityManager(profile, context)

                'Create an instance of a list of ActivityPreferencePerType objects.'
                Dim activityPrefsPerType As New List(Of ActivityPreferencePerType)(activityMan.ActivityTypes.Count)

                'Get each ActivityType stored in ActivityManager, and for testing purposes, set each ActivityType as a true ActivityPreference.'
                For Each activityType As ActivityType In activityMan.ActivityTypes
                    If activityType.ActivityTypeNameLocStringName = "ActivityFeed_DLMembershipChange_Type_Display" Then

                        Dim newPref As New ActivityPreferencePerType()
                        newPref.ActivityType = activityType
                        newPref.IsSet = False
                        activityPrefsPerType.Add(newPref)
                        Console.WriteLine(activityType.ActivityTypeName + " " + activityType.ActivityTypeId.ToString())

                    End If
                Next

                'Set activity preferences for the user.'
                activityMan.ActivityPreferences.SetActivityPreferencesPerType(activityPrefsPerType)

                Console.ReadKey(True)

    End Using
End Sub
End Class

このコードはエラーなしでコンパイルおよび実行されますが、ユーザーがニュースフィードのために購読しているアクティビティに影響を与えないようです。他の誰かが同様の問題を抱えていましたか? SharePoint 2010で私のサイトを実装しようとすることを真剣に試みた場合、それは十分な一般的な問題になると思われます。

お時間をいただきありがとうございます。

乾杯、

フィル

アップデートPowerShell Sethingを行うと、これは私のActivityManagerオブジェクトの問題である可能性があるようです。上記のようにActivityManagerオブジェクトをインスタンス化して、ユーザー「TheDomain username」のユーザープロファイルを渡します。オブジェクトを作成した後にオブジェクトを検査すると、「currentUsername」がサービスアカウントに設定されているように見えます(これはたまたまマシンでログインしているアカウントです)。 MSDNは、ActivityManagerの現在のユーザーメンバーを次のように説明しています。

「現在のユーザーの名前を表す文字列を取得します。」

ActivityManagerのプロパティは、「thedomain username」ユーザーではなく、サービスアカウントの設定のように構成されているように見えます。

役に立ちましたか?

解決

ActivityManagerアセンブリで.NET Reflectorを使用して、Microsoftがアカウントを所有しているユーザーを除くすべての人がこれらの設定を変更することを許可しないと結論付けることができました。上記のケースでは、農場管理者としてログインしている間、コンソールコマンドを介してコードを実行しようとしていました。ファームアカウント!=設定が適用されるユーザーのアカウントであるため、Microsoftは設定の変更を禁止します。

ユーザーが最初にMySiteにログインしたときに(背景で)このコードを実行させることで、これを回避することができました。

他のヒント

ユーザープロファイルサービスを所有するグループにアプリケーションプールの所有者を追加すると、許可の問題を回避することもできます。コードはアプリプールの所有者から実行されますが、アクティビティマネージャーを使用するにはUPSの所有者である必要があります。 MS Productsを扱うもう1つの特典!

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top