Come a livello di programmazione di ottenere un link al timer personalizzato impostazioni del lavoro?
-
10-12-2019 - |
Domanda
Ho creato un timer personalizzato di lavoro e distribuito a tutte le applicazioni web.In un custom amministrazione centrale della pagina dell'applicazione, vorrei mostrare link a questo processo timer (ad es.2 link, se ci sono 2 applicazioni web), cioètimer impostazioni del lavoro per rendere più facile per l'utente a trovare il lavoro.Quando l'utente fa clic sul link, mi piacerebbe aprire lo stesso processo timer impostazioni/schedule pagina che si apre quando si naviga tramite Amministrazione Centrale :Le Definizioni Di Processo.
Come posso costruire Url che punta alla mia custom processi timer impostazioni?Classe di attuazione SPFeatureReceiver
ha GUID assegnato, ma non so come usare questo per ottenere un collegamento completo come:
http://srvr/_admin/JobEdit.aspx?JobId=ffccdd35-4444-4b22-b47b-73bf7039f777
Nota che il GUID nell'URL non è la stessa come il GUID previsto nel codice, come ogni web app avrà un URL diverso per il timer impostazioni del lavoro.Possibile che la URL in qualche modo essere ottenuto tramite SPWebApplication
?
Soluzione
Per ogni applicazione web è possibile effettuare le seguenti operazioni:
- Ottenere la vostra definizione del processo timer (SPJobDefinition) da SPWebApplication.JobDefinitions
Ottenere il guid:
string jobDefID = SPJobDefinition.Id.ToString();
Aggiungere il guid della stringa di query
http://srvr/_admin/JobEdit.aspx?JobId=jobDefID
Altri suggerimenti
Questo è come l'ho fatto:
SPWebApplication webApp = SPWebApplication.Lookup(new Uri(webAppUrl));
var customJob = (from job in webApp.JobDefinitions where job.Name == "MyTimerJobName" select job).Single(); // for some reason wont't work if I try to get the job using [name]
string jobUrl = Microsoft.SharePoint.Administration.SPAdministrationWebApplication.Local.Sites[0].Url + "/_admin/JobEdit.aspx?JobId=" + timerJob.Id.ToString();
.