Domanda

Ciao e grazie per la lettura. Ho lavorato con SharePoint 2010 Notizie porzione di alimentazione out-of-box di siti personali, e sto progettando di distribuire a molti utenti.

Sto costruendo un'applicazione console che scorrere tutti i miei siti attualmente nel sistema e non-verifica una delle "Attività che sto seguendo' per ogni utente. Ho usato l'esempio fornito a questo link (MSDN) a venire con il seguente codice:

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

Questa compila codice e esegue senza errori, ma sembra non avere alcun effetto sulle attività che l'utente è abbonato a per la loro news feed. Chiunque altro ha avuto un problema simile? Sembra che sarebbe un problema abbastanza comune, se si dovesse fare un serio tentativo di attuare i siti in SharePoint 2010.

Grazie per il vostro tempo e il vostro aiuto in anticipo.

Saluti,

Phil

Aggiorna Facendo qualche powershell sleuthing sembra che questo potrebbe essere un problema con il mio oggetto ActivityManager. Ho un'istanza dell'oggetto ActivityManager come sopra, passando nel UserProfile per l'utente "THEDOMAIN \ nomeutente". Quando sono ispezionare l'oggetto dopo averlo creato, sembra che la "CURRENTUSERNAME" è impostato l'account di servizio (che risulta essere il conto sono entrato in sulla macchina). MSDN descrive il membro utente corrente del ActivityManager come:

"Ottiene una stringa che rappresenta il nome dell'utente corrente."

Le proprietà del ActivityManager appaiono anche essere configurato come le impostazioni dell'account di servizio, piuttosto che il "THEDOMAIN \ nomeutente" utente.

È stato utile?

Soluzione

Utilizzando riflettore .NET sul ActivityManager di montaggio sono stato in grado di concludere che Microsoft non consente queste impostazioni vengano modificate da chiunque tranne che per l'utente che possiede il conto. Nel caso di cui sopra, stavo tentando di eseguire il codice tramite comando console mentre si è connessi come amministratore della farm. Poiché l'account della farm! = L'account dell'utente per il quale applicare le impostazioni, Microsoft esclude dal finanziamento modifica delle impostazioni.

Siamo stati in grado di ovviare a questo avendo l'utente eseguire questo codice (in sottofondo) al primo accesso nel loro sito personale.

Altri suggerimenti

Se si aggiunge il proprietario pool di applicazioni al gruppo che possiede il servizio profili utente, è anche possibile aggirare il problema di autorizzazione. Il codice viene eseguito dal proprietario della piscina app, ma quella persona deve essere il proprietario UPS perché usando il Gestore di attività lo richiede. Solo un altro vantaggio di lavorare con i prodotti MS!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top