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.




Bereitstellen von Lösungen (.wsp) auf eine Webanwendung beschränken

Geprüfte Antwort Dieser Beitrag hat 5 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 23 Mai 2016 13:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

wir haben in unserer SPServerfarm für jede SPSitecollection eine eigene Webanwendung (SPWebApplication) erstellt.
Für jede dieser WebApplications stellen wir via PowerShell Skript verschiedene Lösungen bereit. (.wsp Dateien)

Nun haben wir das Problem, dass mit dem verwendeten Code diese Lösungen nicht nur für eine Webanwendung bereitgestellt werden, sondern für alle, obwohl dies gar nicht gewünscht ist und haufenweise Fehlermeldungen produziert.
Ich vermute, dass das Problem an der Scope Eigenschaft der Lösungen liegt, weshalb nur das globale bereitstellen funktioniert, bin mir da aber nicht 100% sicher.

Hier erstmal der verwendete Code:

stsadm -o addsolution -filename $filename"\wspFiles\Filter.wsp"
stsadm -o deploysolution -name Filter.wsp -url $meinWeb  -immediate -allowgacdeployment -force

Sobald ich den Parameter -allowgacdeployment entferne funktioniert der Veröffentlichungsvorgang nicht mehr.

Aber es ist eben nicht schön wenn man die bereitgestellte Lösung erst aus 20 anderen Webanwendungen löschen muss um auf dem eigentlichen Zielsystem gewollte Funktion zu erzielen..
Wenn jemand eine Idee hat bin ich ganz Ohr :-)

Mit freundlichen grüßen
mstel

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 23 Mai 2016 14:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das geht ganz einfach nicht. Auch wenn SharePoint einem vorgaukelt, man könne eine Lösung für eine ganz bestimmte Webanwendung bereitstellen, stimmt das nicht. Nur z.B. SafeControl-Einträge werden dann nur in die web.config der einen Webanwendung geschrieben, aber alles andere ist immer überall.

Man muß die Lösungen einfach so bauen, daß sie auf den "falschen" Webanwendungen keine Fehler schmeißen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 24 Mai 2016 14:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Auch mit ändern der Scope Eigenschaft auf "Site" bzw. "Web" lässt sich das Problem nicht lösen?

Es kann doch nicht von Microsoft gewünscht sein, dass man beim bereitstellen einer Lösung auf einer fremden Serverfarm die verwendete Ressource für jede in der Farm vorhandene Webanwendung bereitstellen MUSS oder irre ich mich? Dann verstehe ich den Sinn in der Scope Eigenschaft nämlich nicht.

Gruß
mstel

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Mai 2016 15:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Scope ist ja für Features und hat da durchaus auch Sinn. Es besagt ja nur, in welchem Bereich sich ein Feature nach dem Aktivieren auswirkt und hat mit dem Bereitstellen der Lösung gar nichts zu tun.

Farm-Lösungen stehen eben immer auch in der gesamten Farm zur Verfügung und das ist auch Sinn der Sache. Wo hast Du dabei ein Problem?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 25 Mai 2016 06:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nunja, wir geben jetzt ein Projekt ab, dass ich entwickelt habe. Das ganze wird so ablaufen, dass wir zu einer anderen Dienststelle fahren, diese uns eine Webanwendung auf ihrer Farm bereitstellt wo wir unsere SiteCollection via PowerShell Skript installieren können und ich mithilfe dieses PowerShell Skriptes eine Lösung auf der Webanwendung bereitstelle. Diese ist ein SPTimerJob, der minütlich anspringt.
Davon ausgegangen, dass in der Serverfarm alleine nur 10 andere Webanwendungen laufen, generiere ich auf 9 der 10 Webanwendungen minütlich Fehlermeldungen, da die anderen Anwendungen meine Objekte nicht kennen, die im Job verwendet werden..

Deshalb möchte ich den Job nur auf einer haben.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Mai 2016 08:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Na, das ist ja jetzt etwas ganz anderes. Timerjobs kann man an eine bestimmte Webanwendung binden. Das geht am Besten mit Hilfe eines WebApplication-Features. Der Timer läuft dann im Kontext dieser Webanwendung (und nur im Kontext dieser Webanwendung). Beispiel: http://www.andrewconnell.com/Creating-Custom-SharePoint-Timer-Jobs

Viele Grüße
Andi
af @ evocom de
Blog