Frage

Hallo und danke fürs Lesen. Ich habe mit dem News-Feed-Teil meiner Websites von Out-of-Box SharePoint 2010 zusammengearbeitet und plane, ihn für viele Benutzer bereitzustellen.

Ich baue eine Konsolenanwendung, die alle meine Standorte im System durch ITREIERTEN und eine der "Aktivitäten, die ich für jeden Benutzer folge" enthüllt. Ich habe das Beispiel verwendet dieser Link (MSDN) um den folgenden Code zu finden:

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

Dieser Code erstellt und führt ohne Fehler aus, scheint jedoch keinen Einfluss auf die Aktivitäten zu haben, die der Benutzer für seinen Newsfeed abonniert hat. Hatte noch jemand ein ähnliches Problem? Es scheint, als wäre es ein übliches Problem, wenn man einen ernsthaften Versuch unternehmen würde, meine Websites in SharePoint 2010 umzusetzen.

Vielen Dank für Ihre Zeit und Ihre Hilfe im Voraus.

Prost,

Phil

AKTUALISIERENWenn Sie einige PowerShell -Schlägen machen Es scheint, dass dies ein Problem mit meinem Aktivitätsmanager -Objekt sein könnte. Ich instanziiere das ActivityManager -Objekt wie oben und übergende das Benutzerprofil für den Benutzer "Thedomain Benutzername". Wenn ich das Objekt nach dem Erstellen inspiziere, scheint es, dass der "CurrentUnername" auf das Servicekonto festgelegt ist (das zufällig das Konto ist, in das ich auf der Maschine angemeldet bin). MSDN beschreibt das aktuelle Benutzermitglied von ActivityManager als:

"Erhält eine Zeichenfolge, die den Namen des aktuellen Benutzers darstellt."

Die Eigenschaften im ActivityManager scheinen auch wie die Einstellungen des Servicekontos als der Benutzer "thedomain username" konfiguriert zu sein.

War es hilfreich?

Lösung

Mit .NET -Reflektor in der ActivityManager -Assembly konnte ich zu dem Schluss kommen, dass Microsoft diese Einstellungen nicht von jedem geändert wird, mit Ausnahme des Benutzer, der das Konto besitzt. In dem obigen Fall versuchte ich, den Code über Konsolenbefehle auszuführen, während ich als Farm Administrator angemeldet war. Da das Farmkonto! = Das Konto des Benutzers, für das die Einstellungen gelten, hat Microsoft die Änderung der Einstellungen nicht aus.

Wir konnten dies umgehen, indem wir den Benutzer diesen Code (im Hintergrund) ausführen ließen, wenn er sich zum ersten Mal in seine MySite anmeldete.

Andere Tipps

Wenn Sie den Besitzer des Anwendungspools zur Gruppe hinzufügen, der den Benutzerprofildienst gehört, können Sie auch das Problem mit der Erlaubnis umgehen. Der Code wird vom App -Pool -Eigentümer ausgeführt, aber diese Person muss der UPS -Eigentümer sein, da die Verwendung des Aktivitätsmanagers dies erfordert. Nur ein weiterer Vorteil der Arbeit mit MS -Produkten!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top