Pregunta

Hola y gracias por leer. He estado trabajando con el SharePoint 2010 Noticias porción de alimentación fuera de la caja de Mis sitios, y tengo la intención de desplegar a muchos usuarios.

Estoy construyendo una aplicación de consola que iterar a través de todos los mis sitios actualmente en el sistema y elimina la marca de una de las "Actividades estoy siguiendo' para cada usuario. He usado el ejemplo proporcionado en este enlace (MSDN) para llegar con el siguiente código:

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

Este código se compila y se ejecuta sin errores, pero no parece tener un efecto sobre las actividades que el usuario está suscrito a su servicio de noticias. Cualquier otra persona tenía un problema similar? Parece que sería un problema bastante común si uno fuera a tomar un serio intento de implementar Mis sitios en SharePoint 2010.

Gracias por su tiempo y su ayuda por adelantado.

Saludos,

Phil

Actualizar Haciendo un poco de PowerShell a la intrépida parece que esto podría ser un problema con mi objeto ActivityManager. I una instancia del objeto ActivityManager como anteriormente, que pasa en el PerfilUsuario para el usuario "ELDOMINIO \ nombre de usuario". Cuando examino el objeto después de crearlo, parece que el "CURRENTUSERNAME" se establece en la cuenta de servicio (que pasa a ser la cuenta de usuario ha iniciado sesión en la máquina). MSDN describe el miembro de usuario actual de ActivityManager como:

"Obtiene una cadena que representa el nombre del usuario actual."

Las propiedades en el ActivityManager también parece estar configurado como la configuración de la cuenta de servicio, en lugar de la "\ nombre de usuario ELDOMINIO" usuario.

¿Fue útil?

Solución

El uso del reflector .NET en el ensamblaje ActivityManager pude concluir que Microsoft no permite estos ajustes sean modificados por cualquier persona excepto por el usuario propietario de la cuenta. En el caso anterior, yo estaba tratando de ejecutar el código a través de comandos de la consola mientras está conectado como el administrador de la granja. Debido a que la cuenta de la granja! = La cuenta del usuario para el que se aplica la configuración, la modificación de la configuración de Microsoft Deshabilita.

Hemos sido capaces de evitar esto haciendo que el usuario ejecute el código (en el fondo) la primera vez que inicie sesión en su MySite.

Otros consejos

Si se agrega el propietario del grupo de aplicaciones para el grupo que posee el servicio de perfiles de usuario, también puede conseguir alrededor del problema de permisos. El código se ejecuta desde el propietario de la piscina aplicación, pero esa persona debe ser el propietario del UPS porque el uso del Gestor de actividad así lo requiera. Sólo otra ventaja de trabajar con productos de MS!

Licenciado bajo: CC-BY-SA con atribución
scroll top