Jestem nowy w rozwoju Sitecore, więc moje przeprosiny, jeśli to pytanie jest podstawowe. Stworzyłem zarówno agenta (zaplanowane zadanie) i usługi WCF i oba zostały dodane do mojego projektu SiteCore. Agent wywołuje ten sam kod, który wywołuje kod usługi WCF.NullReferenceException podczas wywoływania Sitecore Database.Templates [] wewnątrz usługi WCF
Problem, który mam, polega na tym, że gdy wywołuję Database.Template[ID template]
przekazując w kontenerze ID odpowiedniego szablonu dla elementu, który chcę przetworzyć, działa on wewnątrz zadania agenta, ale nie wewnątrz usługi WCF.
Każde połączenie z Database.Template[ID id]
w ramach usługi WCF daje mi NullReferenceException
, jednak to samo połączenie wewnątrz agenta zbiera prawidłowo szablon.
Czy jest to spowodowane przyczynami strukturalnymi, w zależności od tego, czy aplikacja wywołująca jest stroną internetową, czy usługą sieciową?
Edit # 1: Mam SVC jako dozwolonej rozszerzeniu i próbowałem zarówno
Sitecore.Configuration.Factory.GetDatabase("master")
i
var siteContext = Sitecore.Configuration.Factory.GetSite("websiteMaster");
siteContext.Database.Template[];
których oba powrócić NullReferenceException
.
Mogę również pomyślnie uzyskać przedmiot, używając GetItem
, jednak gdy próbuję uzyskać dostęp do właściwości szablonu tego elementu, otrzymuję NullReferenceException
.
Dziękuję za odpowiedź. W rzeczywistości mam prywatne statyczne Sitecore.Data.Database DB = Sitecore.Configuration.Factory.GetDatabase ("master"); zdefiniowane jako część mojej implementacji usług i nadal otrzymuję ten błąd. Ponadto svc został dodany w pliku web.config jako dozwolone rozszerzenie. –
Zakładam, że baza danych "var siteContext" ma teraz wartość null? – jammykam
Zgadzam się z punktem jammykam na ten temat. Jeśli nie wspomnisz o żadnym odwołaniu do bazy danych, otrzymasz null w punkcie, w którym dzwonisz do GetDatabase! –