Entwickler-Ecke

ASP.NET und Web - Prozess startet nicht in IIS (lokal aber schon)


mannyk - Mo 11.10.10 20:04
Titel: Prozess startet nicht in IIS (lokal aber schon)
Hi Leute,

ich möchte gerne per Web Applikation (MVC v1, .NET 3.5) einen externen Prozess starten. Wenn ich das lokal mit VS2008 ausführe funktioniert das ohne Probleme. Allerdings wird der Prozess in IIS 7.5 (OS: Win 7 prof) nicht gestartet.

Anbei der Code, der den Prozess starten sollte:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public ActionResult SendCommand()
        {
            ContentResult res = new ContentResult();
            res.ContentType = "text/plain";

            Process process = new Process();
            process.StartInfo.FileName = "C:\\Program Files (x86)\\girder32\\event.exe";
            process.Start();
            Response.Write("OK");
            
            return res;
        }


Danke und lg,
mannyk


Ralf Jansen - Mo 11.10.10 22:50

a.) Der User unter dem dein IIS Process läuft hat keine Berechtigung Prozesse auszuführen. Dieses Recht müsstest du dem User geben bzw. einen User benutzen der das darf.
und
b.) wenn der IIS User das dann darf dann würde der Prozess in einer Usersession dieses Users laufen und natürlich, wenn du mit einem anderen User interaktiv angemeldet bist, von diesem User auf seinem Desktop nicht zu sehen sein.
und
c.) bekommst du sicherlich beim Aufruf von Process.Start eine Exception die sprechender ist als deine Meldung 'wird nicht gestartet'. Solltest du in deinen Logs mal nachsehen.


ThoMa - Mo 11.10.10 22:52

Hallo,

denke bitte, dass ASP.NET-Aufrufe nicht in Deinem Benutzerkontext stattfinden, sondern im Benutzerkontext desjenigen, der im IIS konfiguriert ist. Wahrscheinlich hat der entsprechende Account keinerlei Recht diesen Prozess zu starten. Daher wird der Prozess auch nicht gestartet.

Guck Dir mal die Informationen im Internet zum Stichwort Impersonation an. Hiermit kannst Du sozusagen temporär den Sicherheitskontext wechseln.

Grüße
ThoMa


mannyk - Di 12.10.10 10:18

Hallo Leute und danke für eure Hilfe!

Ich habe nun herausgefunden, dass es wegen dem anderen (IIS) User liegt. Ich muss jedoch den Prozess unter meinem Benutzer-Account starten, da der Prozess von meiner Benutzer-Session abhängt.

Also habe ich versucht, den Prozess mit meinem Benutzerprofil zu starten.

C#-Quelltext
1:
2:
3:
4:
5:
6:
Process process = new Process();
process.StartInfo.FileName = "C:\\Program Files (x86)\\girder32\\event.exe";
process.StartInfo.UserName = "User";
process.StartInfo.Password = pwString;
process.StartInfo.UseShellExecute = false;
process.Start();

Nun sehe ich allerdings gar nichts mehr von dem Prozess (also auch nicht im Task Manager).

Edit: Habe nun auch versucht die "Process Model Identity" im betreffenden Application Pool auf mein Profil zu ändern.
Im Task Manager wird zwar die .exe dann auch unter meinem Usernamen angezeigt, aber sie ist sonst leider nicht sichtbar.


Was mache ich noch falsch?
Danke für eure Antworten!
lg,
mannyk