2012-08-14 17 views
5

Tengo un trabajo del temporizador de SharePoint que requiere una lista de configuración para existir en una ubicación específica en la colección de sitios. Si esa lista no existe, quiero indicarlo al usuario para que pueda crear (y llenar por supuesto) dicha lista y rerun the job.Cómo informar el estado de un trabajo del temporizador de SharePoint

Puedo escribir en el Registro de eventos con el siguiente código y sé que puedo lanzar una excepción para indicar un estado de trabajo fallido, pero lo que quiero hacer es lanzar una excepción con un mensaje que indique el problema eso no requiere mirar a través del ULS o tener acceso al registro de eventos. Las publicaciones que he encontrado hasta el momento like this one y this one no tienen demasiados detalles.

Dos preguntas: 1) ¿Hay alguna forma de proporcionar un mensaje de error para una excepción de trabajo del temporizador? 2) ¿Hay una mejor opción para lanzar que Exception()?

El registro de eventos utiliza cuando la colección de sitios no se encuentra

SPDiagnosticsService.Local.WriteEvent(0, 
    new SPDiagnosticsCategory("MyCategory", 
     TraceSeverity.Unexpected, 
     EventSeverity.ErrorCritical), 
    EventSeverity.ErrorCritical, 
    "Assert failed: if (!spweb.Exists)" + sp.Url, 
    sp.ToString()); 

Lo que me gustaría que ver con la configuración de la lista faltante

bool configListExists = ListExists(spweb, ConfigListName); 
if (! configListExists) 
{ 
    ReportMissingConfigList(); 
    throw new Exception("Configuration list not found"); 
} 

public static bool ListExists(SPWeb web, string listName) 
{ 
    return web.Lists.Cast<SPList>().Any(list => string.Equals(list.Title, listName)); 
} 

Respuesta

1

recomiendo tener un registro de lista separada al lado la lista de configuración. En esta lista, puede escribir el estado del trabajo cuando sea necesario y luego los usuarios pueden tener una notificación configurada en esta lista para que puedan tomar las medidas apropiadas.

+0

Esto lleva a otra pregunta que creo que voy a preguntar por separado, a) ¿qué pasa si la lista de registro no existe ?, b) tal vez debería agregar las listas en el método receptor FeatureActivation feature en lugar de asumir que ' ¿Se ha creado manualmente? , c) ¿Está agregando las listas programáticamente mucho mejor que crearlas manualmente? –

+0

Recomendaría, como sugiere, que cree la lista en el receptor de características en su lugar. La creación automática es (casi) siempre preferible a la creación manual, ya que reduce el trabajo, aumenta la estabilidad y garantiza que la configuración de la (s) lista (s) sea la misma en todas las instancias de su aplicación (prod, test, dev). –

+0

Otros problemas siguen siendo una dependencia de una ubicación codificada para la lista de cofig. Quiero crearlo en la raíz de la colección de sitios que activó la función, pero cuando probé ese enfoque no pude hacerlo funcionar. Tendré que publicarlo como otra pregunta y luego actualizar este con un enlace. –

Cuestiones relacionadas