Anmelden
Ich möchte für die nächsten 30 Tagen angemeldet bleiben
Deutsch
Several pages in the usergroup are available in English. Click on english to visit these pages.
Druckerfreundlich Eigener SchedulerClient > SearchDataStoreProvider Fehler
Sortieren:
Vorheriger BeitragVorheriger Beitrag Nächster BeitragNächster Beitrag
Sie sind nicht autorisiert, um eine Antwort zu erstellen.
Autor Nachrichten
Thomas K.Benutzer ist Offline
Beiträge: 62
New Member


--
30 Okt 2010 19:51
Huhu Zusammen,

ich habe einen SchedulerClient geschrieben der so weit auch funktioniert, bis auf den Zugriff der Methoden auf den SearchDataStoreProvider. HIer bekomme ich eine NullReferenceException (Object reference not set to an instance of an object).

Ich lasse in meinem News-Modul "ähnliche Artikel" anzeigen, die ich über den Titel der News aus der SearchEngine ziehe.
Nun versuche über den Scheduler Suchergebnisse für jeden Newsartikel in eine Tabelle zu speichern, damit der Suchvorgang in der Searchengine nicht bei jedem Newsaufruf durchgeführt werden muss.

Hier der Codeausschnitt:

SearchDataStoreProvider oSearchController;           
SearchResultsInfoCollection oSearchResults; 

oSearchController = SearchDataStoreProvider.Instance();                           
oSearchResults = new SearchResultsInfoCollection();                           
oSearchResults = oSearchController.GetSearchResults(0, "hallo");

und ganau auf oSearchController.GetSearchResults(0, "hallo"); bekomme ich die NullReferenceException. Seltsam ist, dass ich über ein Test-Modul die Methode  GetSearchResults funktioniert und Werte zurückliefert. Also scheint es zu funktioniert wenn das UserControl von PortalModuleBase abgeleitet wird.

Hat jemand eine Idee?
lG
Thomas K.
Axi BachlechnerBenutzer ist Offline
Beiträge: 29
New Member


--
31 Okt 2010 18:36
Wo genau passiert diese Excpetion? Also was ist null? Hat er bereits schon keinen SearchController oder wirft die Methode GetSearchResults erst diese Exception?
Der SearchDataStoreProvider verwendet hier Container (welche man natürlich nur in der Applikation selbst hat) und wenn keiner vorhanden ist kreiert er einen SimpleContainer (was bei dir der Fall sein sollte) und sollte dann eigentlich eine Instanz des SearchDataStoreProviders builden und zurückliefern. Ich denke mal, dass er dir bereits gar keine Instanz buildet aufgrund des fehlenden Containers.
©a-x-i
Thomas K.Benutzer ist Offline
Beiträge: 62
New Member


--
01 Nov 2010 13:18

Hallo Axi, vielen Dank für deine Antwort!

Ich habe die Logs nun detaillierter durchsucht.


oSearchController = SearchDataStoreProvider.Instance(); 

Also ich erhalte eine Instanz vom SearchDataStoreProvider und oSearchController ist auch nicht "null". Erst wenn ich die Methode   oSearchController.GetSearchResults(0, "hallo") aufrufe erhalte ich die NullReferenceException. In GetSearchResults ist wohl die Methode DotNetNuke.Security.PortalSecurity.IsInRoles der Auslöser der NullReferenceException


Aber selbst wenn ich den Scheduler als angemeldeten SuperUser starte erhalte ich die Exception.

Hat jemand eine Idee?

AssemblyVersion: 5.5.1
PortalID: -1
PortalName:
UserID: -1
UserName:
ActiveTabID: -1
ActiveTabName:
RawURL:
AbsoluteURL:
AbsoluteURLReferrer:
UserAgent:
DefaultDataProvider: DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider
ExceptionGUID: 77695456-c631-4d81-b361-45a0cec13ac9
InnerException: Object reference not set to an instance of an object.
FileName:
FileLineNumber: 0
FileColumnNumber: 0
Method: DotNetNuke.Security.PortalSecurity.IsInRoles
StackTrace:
Message: System.NullReferenceException: Object reference not set to an instance of an object.at DotNetNuke.Security.PortalSecurity.IsInRoles(String roles)at DotNetNuke.Security.Permissions.TabPermissionController.CanViewPage(TabInfo objTab)at DotNetNuke.Services.Search.SearchDataStore.GetSearchResults(Int32 portalID, String criteria)at ModFW.DNN.Modules.CS.News.Scheduler.ScheduleSimilarArticles.DoWork() in d:\Web\FriedWaldWeb\App_Code\ModFW_News\Schedule_SimilarArticles.cs:line 37
Source:



Sebastian LeupoldBenutzer ist Offline
Beiträge: 7071
Senior Member


--
01 Nov 2010 16:19
kann es sein, dass da ergebnisse für nicht mehr existierende Seiten drin sind?
Grüße aus Karlsruhe,
Sebastian Leupold
dnnWerk Verbund
dnnWerk - die DotNetNuke-Experten Deutsche DotNetNuke Usergroup
Thomas K.Benutzer ist Offline
Beiträge: 62
New Member


--
01 Nov 2010 20:27

Hallo Sebastian, danke für den Hinweis ... hmm, ich habe die Tabelle mit den SearchItems gecheckt und es sind alle Seiten (ModuleIds) vorhanden, auch habe ich die SearchItems sowie die SearchItemWord + Position geleert und den Index neu aufgebaut, aber mit dem gleichen Resultat. 

Wie ich schon schrieb, rufe ich die Methode GetSearchResults mit den gleichen Parametern über ein WebUserControl abgleitet von PortalModuleBase auf, funktioniert der Aufruf einwandfrei und ich bekomme auch Ergebnisse zurückgeliefert.

Kann es sein, dass GetSearchResults eine Anmeldeinformation über PortalSecurity.IsInRoles verarbeitet, welche über PortalModuleBase vererbt wird in der Klasse SchedulerClient aber fehlt und daher die NullReferenceExpetion wirft?? 

lG

Thomas K.

Philipp BeckerBenutzer ist Offline
Beiträge: 848
Advanced Member


--
02 Nov 2010 13:47
Im scheduler gibt es keinen http Context, daher kein Portalsettings Objekt und ergo klappen bestimmte geschachtel Methodenaufrufe der API nicht. Im Scheduler ist sowas immer eklig, meist wird man an der API vorbei programmieren müssen. Manche Infos kann man sich auch in den Schedulersettings ablegen, aber wenn Portalsecurity ins Spiel kommt, siehts schlecht aus. Evtl. musst Du selber auf die Suchtabellen zugreifen. Nicht schön, ich weiß, aber so ist es halt manchmal. Auch wenn Du dann natürlich Ergebisse bekommst, die nicht die Rollen des Users berücksichtigen.
Herzliche Grüße aus Bremen, Philipp

Sie sind nicht autorisiert, um eine Antwort zu erstellen.

Active Forums 4.2
NOT LICENSED FOR PRODUCTION USE
www.activemodules.com