Hallo,
ich habe mal wieder einen SPTimerJob mit dem Scope Site in C# erstellt und wollte diesen auf meiner Website laufen lassen. Ich habe die Fehlermeldung "The Value does not fall within expected Range" erhalten. (timer läuft im GAC, die solution wird aber nur auf einer Site aktiviert. das ganze verwenden wir so bereits mit mehreren Timern und immer hat es funktioniert) Als ich nach diesem Fehler recherchierte, stellte ich fest, dass dieser bei anderen Personen nur auftritt, wenn diese versuchen Listenwerte zu ändern, also habe ich sämtliche Funktionen im Code auskommentiert (da ich in diesen so etwas gemacht habe) und rufe nach erstellen des Jobs lediglich eine leere Methode auf. Trotzdem erscheint die Fehlermeldung, wenn ich bei Überprüfen der Zeitgeberaufträge in der Zentraladministration nachschaue. (Status ist auch fehlgeschlagen, weitere Infos dazu stehen aber weder dort, noch in den logs) Ich habe sowohl den Timer, als auch die IIS & den Rechner mal neu gestartet, da ich gedacht habe, etwas hätte sich einfach noch nicht aktualisiert. Aber sogar nach Neuerstellen des Projektes mit anderen Name kommt exakt die gleiche Fehlermeldung (ohne dass ich überhaupt nur versuche etwas zu machen, außer den Job zu erstellen und diesen natürlich bei Feature deactivating wieder lösche). Anschließend habe ich also mal die Lösungsansätze der Leute ausprobiert, die diesen Fehler auch hatten und habe in der Ressourcenverwaltung die maximal zu verwaltenden Listenelemente von 8 auf 20, 50, 1000 angehoben und es erneut probiert. - Immernoch der Fehler
Die Funktionalität des Timers habe ich natürlich vorher in einer Konsolenanwendung gebaut und getestet, da dies dort viel leichter zu realisieren ist als mit Timern. Daher kann ich eigentlich auch bestätigen, dass es nicht an der Ressourcenverwaltung liegt, denn in der Konsole werden viele Listenfelder verwaltet und dort klappt es einwandfrei. Hat jemand den Fehler in dem Zusammenhang ebenfalls erhalten? MFG MStel
Dein Bereitstellungsszenario habe ich nicht verstanden. Hast Du eine Farm Solution, die über die Zentraladministration bereitgestellt wird? Und ein SiteCollection-Feature, das den Timer bereitstellt bzw. entfernt?
Und dann die Frage, woher Du die Fehlermeldung "value does not..." hast? An derselben Stelle sollten sich noch mehr Informationen zum Fehler finden bzw. es sollte möglich sein, daß dort noch mehr protokolliert wird.
Ja, die Lösung ist mit dem Scope Site in der GAC für alle Webanwendungen bereitgestellt und erscheint in den entsprechenden SiteCollectionFeatures als SPUserSolution, wird aber via Enable SPFeature nur auf einer einzigen Seite aktiviert. Sobald diese aktiviert wird, wird der Timer erstellt, und erscheint in der Zentraladministration bei Überwachung -> Zeitgeberaufträge. Dort habe ich im Verlauf nach meinem Job geschaut und als ich auf Fehlgeschlagen beim Status geklickt habe kam diese Meldung vonwegen value does not..
Dir ist aber schon klar, daß das bei einer normal konfigurierten Farm nicht funktioniert? Ganz einfach, weil man aus einer normalen Websitesammlung keine Rechte hat, Timerjobs anzulegen. Ich würde ein WebApp-Feature daraus machen.
Aber zum eigentlichen Problem: baue mal um den Code in der Execute-Methode ein Try-Catch und lasse Dir die gesamte Exception in die Logs ausgeben.