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));
}
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? –
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). –
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. –