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 - Url im C# Programmcode

Geprüfte Antwort Dieser Beitrag hat 7 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 25 Sept. 2015 13:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe einen SP TimerJob in VS 2010 C# entwickelt.
Dort verwende ich um mithilfe der Site Variable das RootWeb zu ermitteln eine fest ausgeschriebene URL.

Besteht irgendwie die Möglichkeit, diesen SPTimerJob ohne irgendeine Angabe einer URL zu entwickeln und der Job dennoch gemeint was gemeint ist?

SPContext, CurrentWeb ?

mfg

Mstel

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Sept. 2015 14:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, das kann man lösen. Du kannst beim Erzeugen des Timers (wahrscheinlich im FeatureActivated oder wo auch immer Du das machst) diesen Konstruktor benutzen (https://msdn.microsoft.com/en-us/library/ms427704.aspx) und dabei eine SPWebApplication angeben. Den SPServer-Parameter kannst Du übrigens mit null belegen.

In der Execute-Methode über this.Parent wieder an die WebApp.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 28 Sept. 2015 07:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sehr gut, also steht im Endeffekt damit wirklich nirgends im Code mehr eine fest ausgeschriebene URL?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 28 Sept. 2015 08:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn Du sie nicht reinprogrammierst nicht. Du verwendest ja nur die SPWebApplication und das geht in jeder beliebigen Farm - egal welche Adresse tatsächlich dahintersteckt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 28 Sept. 2015 11:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dass bedeutet doch im Umkehrschluss ebenfalls, dass ich die beim kompilieren erzeugte .wsp Datei einfach 1 zu 1 auf ein anderes System übernehmen kann ohne Änderungen vornehmen zu müssen oder?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 28 Sept. 2015 11:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, wie gesagt, es geht wenn Du Dich im Code nur auf die WebApp beziehst und sonst nichts mehr fest verdrahtet hast.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 29 Sept. 2015 08:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich verstehe leider immernoch nicht wie ich innerhalb der Execute Methode beispielsweise die Site aus dem aktuellen Kontext ziehen kann.

public tJob(string jobName, SPWebApplication webApp, SPServer server, SPJobLockType locktype)
 : base(jobName, webApp, null, SPJobLockType.Job)
{
 this.Title = jobName;

tJob job = new tJob("tJob", webApplication, null, SPJobLockType.None);

using (SPSite site = new SPSite(this.Parent.??? ))

 

 

 

In der letzten Zeile mit dem Using hatte ich vorher meine hart kodierte URL stehen. Nun möchte ich das Site Objekt ohne angegebene übergeordnete WebApp über das this.Parent auslesen. Funktioniert dies?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 29 Sept. 2015 09:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

mit new tJob erzeugst Du einen neuen Timerjob. Das solltest Du nur einmalig im FeatureActivated machen, um Deinen Timerjob zu registrieren. Dabei wird diesem eine WebApp zugewiesen (das Parent des Features). In der Execute-Methode kommst Du an diese Webapp wieder über this.Parent.

Viele Grüße
Andi
af @ evocom de
Blog