SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




SPTimerJob Manuell aktivieren nicht möglich - Mit Debugger schon

Unbeantwortet Dieser Beitrag hat 2 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 13 Jan. 2017 12:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe mal wieder einen SPTimerJob entwickelt, sprich ein Feature mit Event Receiver, welches für den Bereich Site zuständig ist und die Assemblybereitstellung des Projektes an sich steht auf Webapplication anstatt Global Assembly, damit ich die Anwendung nur für eine Webanwendung bereitstelle

Die Funktionalität des timers ist erstmal nebensächlich, er funktioniert allerdings wenn ich ihn im Visual Studio Debugge ohne Fehlermeldungen auszuwerfen. Man kann sichtbar nachvollziehen, wie in der Zentraladministration zuerst eine Farmlösung hinzugefügt wird, anschließend bei der Websitesammlung ein Feature in den Websitesammlungsfeatures hinzugefügt und dieses aktiviert wird, dann bei den zeitgeberaufträgen in der Zentraladministration unter Überprüfen ein Timer angelegt wird und sobald dieser das erste mal anspringt auch auf der Website die Funktionellen Änderungen.


Stoppe ich das Debugging, verschwindet das Feature auf der Site, der Zeitgeberauftrag und die Farmlösung aus der CA und auch die Funktion die ausgeführt werden soll wird nun nicht mehr ausgeführt - alles wie es sein soll.

Aber nun zu meinem Problem:
Ich muss die Datei ohne Visual Studio auf meine Website bringen.
Also habe ich mit stsadm -o addsolution via sharepoint management Shell die Lösung meiner Zentraladministration zugefügt und anschließend mit stsadm -o deploysolution explizit für meine Zielsite  erfolgreich bereitgestellt.
Allerdings ist das in den Websitesammlungsfeatures auftauchende Feature nicht direkt aktiv, anders als beim Debuggen im Studio. Versuche ich es von Hand zu aktivieren, kommt eine Fehlerseite auf der leider keine Informationen zum fehler an sich auftauchen. Auch aktivieren via powershell wirft keine detaillierte Fehlermeldung aus. In den logs steht ebenfalls nichts dazu, ich gehe davon aus das liegt daran, weil noch kein Timer installiert wurde.
Da es an dieser Stelle schon scheitert, wird die Feature Activating Methode des Event Receivers nicht ausgelöst und der Job wird nicht angelegt und macht demnach nichts. - alles Folgefehler

Ich muss also gucken, dass ich die Lösung aktiviert bekomme, die über den Debugger standardmäßig aktiviert ist und sich via Powershell hinzufügen der Lösung nicht aktivieren lässt.

Habt ihr eine Idee wie ich das machen kann bzw. ist das ein häufiger auftretendes Problem?

Mit freundlichen grüßen

Mstel

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 13 Jan. 2017 13:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was Visual Studio da im Debugger macht, kannst Du kein Stück mit einer realen Umgebung vergleichen. Vergiß es also - das taugt nur um mal schnell etwas auszuprobieren. Besser ist es schon, die Solution manuell bereitzustellen, sich mit Visual Studio an den w3wp (oder hier den owstimer) zu hängen und dann so zu debuggen. Aber auch das kann falsche Infos liefern, weil Entwicklungsumgebungen selten realen Umgebungen entsprechen.

[quote user="MStel"]die Assemblybereitstellung des Projektes an sich steht auf Webapplication anstatt Global Assembly[/quote]

Stelle das wieder auf den GAC um. Der Timerservice kann die Assembly sonst nicht finden.

In einer vernünftig konfigurierten Umgebung kannst Du aus einem Site Collection Feature heraus keinen Timerjob bereitstellen. Ganz einfach, weil dazu die Rechte fehlen. Deshalb macht man dafür Web Application Features, die in der Zentraladministration aktiviert werden. Dort hat man die notwendigen Rechte.

Baue in Dein FeatureActivated eine vernünftige Fehlerbehandlung ein und protokolliere Fehler am besten in die ULS-Logs. Du siehst dann, daß es sich um ein Access Denied Problem handelt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 16 Jan. 2017 07:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Andi Fandrich"]

Stelle das wieder auf den GAC um. Der Timerservice kann die Assembly sonst nicht finden.

 

[/quote]

So etwas dachte ich mir schon. Schade, mit der Einstellung WebApplication wollte ich nämlich vermeiden, dass die Lösung(SPtimerjob) wie im Beitrag neulich erwähnt, auf allen Applications installiert wird.

[quote user="Andi Fandrich"]

Baue in Dein FeatureActivated eine vernünftige Fehlerbehandlung ein und protokolliere Fehler am besten in die ULS-Logs. Du siehst dann, daß es sich um ein Access Denied Problem handelt.

[/quote]

Das ist eine sehr gute Idee!
Besten dank.

MFG
Mstel