2012-08-14 13 views
5

Ho un processo timer di SharePoint che richiede l'esistenza di un elenco di configurazione in una posizione specifica nella raccolta siti. Se quell'elenco non esiste, voglio indicarlo all'utente in modo che possano creare (e popolare ovviamente) l'elenco e rerun the job.Come segnalare lo stato da un processo timer di SharePoint

Posso scrivere nel registro eventi con il codice seguente e so che posso generare un'eccezione per indicare lo stato di un processo non riuscito, ma quello che voglio fare è generare un'eccezione con un messaggio che indica il problema in un modo ciò non richiede la consultazione attraverso l'ULS o l'accesso al registro eventi. I post che ho trovato finora like this one e this one non hanno troppi dettagli.

Quindi due domande: 1) Esiste un modo per fornire un messaggio di errore per un'eccezione del processo timer? 2) Esiste una scelta migliore per lanciare di Exception()?

La registrazione degli eventi utilizzato quando la raccolta siti manca

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

Quello che mi piacerebbe fare con la lista di configurazione mancante

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)); 
} 

risposta

1

Consiglierei visto un log-list separato accanto la lista di configurazione. In questo elenco è possibile scrivere lo stato del lavoro quando è necessario e quindi gli utenti possono disporre di una notifica impostata in questo elenco in modo che possano prendere le misure appropriate.

+0

Questo porta a un'altra domanda che credo chiederò separatamente, a) e se la lista di log non esiste ?, b) forse dovrei aggiungere gli elenchi nel metodo di ricezione della funzione FeatureActivation invece di assumerli ' sono stati creati manualmente? , c) sta aggiungendo programmaticamente gli elenchi che è molto meglio che crearli manualmente? –

+0

Raccomanderei, come suggerite, di creare invece la lista nel ricevitore di funzioni. La creazione automatica è (quasi) sempre preferibile alla creazione manuale poiché riduce il lavoro, aumenta la stabilità e assicura che le impostazioni per la lista siano esattamente le stesse in tutte le istanze dell'applicazione (prod, test, dev). –

+0

Altri problemi rimangono come dipendenza da una posizione codificata per la lista dei cofig. Voglio crearlo nella radice della raccolta siti che ha attivato la funzione, ma quando ho provato quell'approccio non ero in grado di farlo funzionare. Dovrò postarlo come un'altra domanda e poi aggiornarlo con un link. –

Problemi correlati