Wie starte ich einen Prozess von einem von IIS gehosteten WCF-Dienst?

8

Ich möchte einen Prozess von einem Intranet-Client auf der WCF-Dienstseite ausführen. In meinem Fall fordert ein Client einen Server auf, unter den angegebenen Anmeldeinformationen einen neuen Prozess auf dem Computer des Servers zu erstellen. Der WCF-Dienst wird auf IIS 7.5 gehostet und ich starte einen Prozess mit diesem Code

%Vor%

Dieser Code funktioniert, wenn ich den WCF-Dienst als selbst gehostete Konsolenanwendung hostet, die unter dem Benutzer admin ausgeführt wird, und ich sehe, dass der Editor unter einem anderen Benutzer gestartet wird. Es schlägt auf IIS ohne Ausnahme fehl, aber Prozess wird sofort beendet

%Vor%

In IIS Die WCF-Anwendung wird unter dem Benutzer mit Administratorrechten ausgeführt, und die vollständige Vertrauensstellung ist in web.config definiert. Ich kann keine selbst gehostete Anwendung verwenden, da sie keine einfache kontinuierliche Bereitstellung unterstützt (wie WebDeploy mit IIS-Webfarmen).

F: Wie kann ich einen Prozess auf einer Serverseite vom WCF-Dienst starten, der auf IIS gehostet wird?

BEARBEITEN:
Ich stolperte über diese Post , mit ähnlichen Problemen und ich versuchte alle Methoden dort, einschließlich aller möglichen Variationen für Process.Start und P / Invoke mit CreateProcessWithLogonW und CreateProcessAsUser Ich habe auch versucht, zusätzliche Berechtigungen für Benutzer zu erteilen. Nichts davon würde mit den Fehlermeldungen funktionieren, die mit denen identisch sind, die der Typ gepostet hat.

    
oleksii 26.08.2011, 19:15
quelle

3 Antworten

4

Oleksii, der Punkt ist, dass wenn Sie den WCF-Dienst in einer Konsolenanwendung hosten, gibt es eine Windows-Sitzung (ein Benutzer angemeldet und Windows Explorer geladen) für diesen Benutzer und der Notizblock ist geöffnet und für diesen Benutzer angezeigt, so Sie sehen es in der Benutzeroberfläche.

Wenn Sie Ihren WCF-Dienst in IIS hosten, ist IIS ein Server, IIS erfordert und lässt keine Benutzerinteraktion zu und funktioniert auch, wenn kein Benutzer angemeldet ist. In diesem Kontext gibt es keine Benutzeroberfläche zum Hosten Ihres Editors oder anderer UI-fähiger Anwendungen. Sie könnten einen Prozess zur Bearbeitung oder andere Stapeljobs ausführen, aber keine Windows-UI-Anwendung, da Windows Explorer nicht für Sie geladen ist und es keinen Platz gibt rendern Sie die Benutzeroberfläche Ihres Prozesses.

    
Davide Piras 28.08.2011, 11:53
quelle
1

Hier verwende ich, um GnuPGP aufzurufen, eine Verschlüsselung durchzuführen. Wie vergleicht Ihr Setup?

%Vor%     
Dustin Davis 26.08.2011 19:19
quelle
1

Es gibt eine Apppool-Einstellung, um sicherzustellen, dass das Benutzerprofil geladen wird.

%Vor%

Das zusammen mit einem Domänenbenutzer als die Identität mit genügend Berechtigungen könnte funktionieren? Ich weiß, dass der Benutzer mindestens ein Benutzerprofil benötigt.

Das heißt, es ist ein bisschen eine seltsame Architektur. Es scheint, als wäre ein besserer Bogen ein persistenter Prozess wie ein Windows-Dienst, mit dem die Site kommuniziert, aber ich bin mir nicht sicher, was Ihre Einschränkungen sind.

Ich hoffe, das hilft.

    
bryanmac 28.08.2011 12:09
quelle

Tags und Links