2010-05-05 13 views
6

Creo que iniciar un trabajo de temporizador dentro del código requiere credenciales de administrador de granja. Sin embargo, necesito comenzar un trabajo de temporizador desde un elemento web que se utilizará en cualquier sitio. Ahora, cuando intento comenzar el trabajo, me da un error de acceso denegado obviamente porque la identidad del grupo de aplicaciones no es administrador de la granja. ¿Alguna idea sobre cómo resolver este problema?Trabajo del temporizador desde un SPWeb

Gracias,

Respuesta

6

Las tareas del temporizador se ejecutan como administrador de la comunidad y no están destinadas a ser activadas directamente por un usuario final. Dado que algunos trabajos pueden requerir muchos recursos, solo el administrador de la granja de servidores puede crear nuevos trabajos o modificar el cronograma de los trabajos existentes.

Una solución es utilizar la infraestructura SPWorkItem para poner en cola tareas de usuario que luego se procesan mediante un trabajo de temporizador personalizado derivado de SPWorkItemJobDefinition. Su webpart llamará al SPSite.AddWorkItem para agregar el elemento de trabajo. Cuando se ejecute el trabajo del temporizador, buscará los elementos de trabajo con el GUID WorkItemType correspondiente e invocar la sobrecarga ProcessWorkItem.

3

Su razón. Para iniciar un trabajo de temporizador, el usuario del grupo de aplicaciones debe ser administrador de la granja de servidores. Como iniciar un trabajo del temporizador requiere que actualice un objeto SPJobDefinition con un SPSchedule. El SPJobDefinition es un SPPersistedObject que se almacena en la base de datos de configuración de SharePoint. Solo los administradores de la granja pueden escribir en este db.

No veo la manera de superar este problema.

Solución alternativa: Dependiendo de sus requisitos, podría escribir un trabajo maestro que se ejecute de manera regular. Este trabajo podría consultar una lista de SharePoint e iniciar otro trabajo definido por dicho elemento de la lista. Como el trabajo maestro se ejecuta bajo la cuenta Administrador de la granja de servidores, el trabajo podría iniciar un nuevo trabajo del temporizador.

Cuestiones relacionadas