Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Beste Strategie um Prozess aus Webservice zu starten
realProg
myCSharp.de - Member



Dabei seit:
Beiträge: 95

Themenstarter:

Beste Strategie um Prozess aus Webservice zu starten

beantworten | zitieren | melden

Hallo Leute!

Ein Prozess (Konsolenprogramm welches ca. eine halbe Stunde läuft) soll durch Aufruf eines Webservices (.asmx) gestartet werden.
Was ist hierfür die beste Strategie?

Der Prozess kann auch gestartet werden, nur kommt es durch fehlende Berechtigungen zu Problemen bei der Abarbeitung des Prozesses. D.h. ich kann nicht auf SharePoint zugreifen
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von realProg am .
private Nachricht | Beiträge des Benutzers
felix
myCSharp.de - Member



Dabei seit:
Beiträge: 174

beantworten | zitieren | melden

Hallo realProg,

kannst du kurz beschreiben, was die Konsolen-Applikation machen soll? Eventuell bietet SharePoint an dieser Stelle auch eine bessere Lösung an.

Achja, welche SharePoint Version benutzt du?

Gruß,
felix
private Nachricht | Beiträge des Benutzers
realProg
myCSharp.de - Member



Dabei seit:
Beiträge: 95

Themenstarter:

beantworten | zitieren | melden

Ich glaube nicht, dass es hier an der SharePoint-Version etc. liegt.
Wenn ich das Programm direkt starte läuft alles problemlos.

Ich glaube viel mehr, dass das Problem im Benutzer des Prozesses liegt, da dieser bei lokaler Ausführung ein anderer ist (angemeldeter Benutzer), als bei Start über das Webservice (SYSTEM).
private Nachricht | Beiträge des Benutzers
felix
myCSharp.de - Member



Dabei seit:
Beiträge: 174

beantworten | zitieren | melden

Zitat von realProg
Ich glaube nicht, dass es hier an der SharePoint-Version etc. liegt.
Wenn ich das Programm direkt starte läuft alles problemlos.

Ich glaube viel mehr, dass das Problem im Benutzer des Prozesses liegt, da dieser bei lokaler Ausführung ein anderer ist (angemeldeter Benutzer), als bei Start über das Webservice (SYSTEM).

Als SharePoint-Entwickler habe ich vielleicht eine alternative (elegantere) Lösung für dich. Aber das setzt vorraus, dass du meine Frage beantwortest ;-)

Aber zum eigentlichen Thema:
Aus dem Objekt-Modell heraus solltest du auf dem SharePoint-Server eigentlich ohne Probleme eine Konsolen-Anwendung starten können.

Schau' dir ggf. dazu mal dashier an:
SPSecurity.RunWithElevatedPrivileges()
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.852

beantworten | zitieren | melden

Webanwendungen laufen immer mit eingeschränkten Rechten; zudem mit dem Account, der im zugewiesenen AppPool hinterlegt ist.
Eine Strategie an für sich gibts nicht: entweder es klappt mit den Rechten, oder Du musst Dir was anderes einfallen lassen.

Ansonsten musst Du eben zB noch WorkingDirectory beachten, wie immer beim Process.Start()
private Nachricht | Beiträge des Benutzers
realProg
myCSharp.de - Member



Dabei seit:
Beiträge: 95

Themenstarter:

beantworten | zitieren | melden

Ablauf:

Webservice wird aufgerufen und startet Konsolenprogramm welches auf dem Server liegt (nicht SharePoint-Server).
Dieses Konsolenprogramm ließt dann die Struktur des SharePoints aus.

Das Konsolenprogramm wird mit dem Benutzer "SYSTEM" gestartet. In der Config des Konsolenprogramms sind die SharePoint-Zugangsdaten hinterlegt mit welchem sich das Programm am SharePoint anmelden soll.

WorkingDirectory ist gesetzt und die AppPool-Identity ist auf "Local Sytem" gesetzt.

Fazit: Das Programm wird gestartet, die Anmeldung am SharePoint funktioniert dann aber nicht mehr (was bei Start des Programms direkt am Server aber funktioniert).
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.852

beantworten | zitieren | melden

Das ist doch auch logisch; bitte nachdenken

Wenn Du es manuell startest, dann wird das Benutzerkonto des ausführenden Users verwendet, bzw dessen UserToken.
Wenn Du die Webanwendung die ConsoleApp starten lässt, dann wird eben LocalSystem verwendet und der hat eben keine Rechte.

Reichen die Rechte von LocalSystem eben nicht, musst Du eben einen anderen User im AppPool hinterlegen.
private Nachricht | Beiträge des Benutzers
realProg
myCSharp.de - Member



Dabei seit:
Beiträge: 95

Themenstarter:

beantworten | zitieren | melden

Ach shit, nachgedacht hab ich, aber verkehrt :/
Danke für die Antworten, dass wars.
private Nachricht | Beiträge des Benutzers
felix
myCSharp.de - Member



Dabei seit:
Beiträge: 174

beantworten | zitieren | melden

Gut ... ich kenne natürlich die Anforderung nicht, aber wenn das Programm auf einem separaten Server laufen muss, dann musst du natürlich mit dem Client-Objekt-Modell arbeiten, oder halt direkt die WebServices ansprechen.

Anderenfalls hätte ich dir jetzt einen SharePoint TimerJob vorgeschlagen. Da hast du solche Probleme definitiv nicht.

Wie dem auch sei ... scheinbar hast du ja jetzt eine Lösung.
private Nachricht | Beiträge des Benutzers