Sono nuovo nello sviluppo di Sitecore, quindi mi scuso se questa domanda è di base. Ho creato sia un agente (operazione pianificata) che un servizio WCF e li ho entrambi aggiunti al mio progetto SiteCore. L'agente chiama lo stesso codice che chiama il codice di servizio WCF.NullReferenceException quando si chiama Database Sitecore.Templates [] all'interno del servizio WCF
Il problema riscontrato è che quando si chiama Database.Template[ID template]
passando nel contenitore ID del modello corrispondente per un elemento che si desidera elaborare, funziona all'interno dell'attività dell'agente, ma non all'interno del servizio WCF.
Qualsiasi chiamata a Database.Template[ID id]
all'interno del servizio WCF mi fornisce un NullReferenceException
, tuttavia la stessa chiamata all'interno dell'agente raccoglie correttamente il modello.
Ciò è dovuto a qualche motivo strutturale che dipende dall'applicazione chiamante che è una pagina Web anziché un servizio web?
Modifica # 1: Ho SVC come estensione consentita, e ho provato sia
Sitecore.Configuration.Factory.GetDatabase("master")
e
var siteContext = Sitecore.Configuration.Factory.GetSite("websiteMaster");
siteContext.Database.Template[];
sia che restituiscono NullReferenceException
.
Posso anche ottenere un articolo con GetItem
, tuttavia quando provo ad accedere alla proprietà Template di quell'elemento, ottengo un NullReferenceException
.
Grazie per la risposta. In realtà, ho statico privato Sitecore.Data.Database DB = Sitecore.Configuration.Factory.GetDatabase ("master"); definito come parte della mia implementazione del servizio e ancora ottengo questo errore. Inoltre, svc è stato aggiunto in web.config come un'estensione consentita. –
Suppongo che il database 'var siteContext' nullo a questo punto? – jammykam
Sono d'accordo con il punto jammykam su questo. Se non si dispone di riferimenti a DB, si otterrà nulla al punto in cui si chiama GetDatabase! –