C#.Net: Warum ist mein Prozess.Start() hängen?

Ich versuche eine Batchdatei ausgeführt, wie ein anderer user, von meiner web-app. Für einige Grund, die batch-Datei hängt! Ich kann es sehen "cmd.exe" laufen in den task-manager, aber es sitzt einfach da, für immer, nicht in der Lage, getötet zu werden, und die batch-Datei nicht ausgeführt wird. Hier ist mein code:

SecureString password = new SecureString();
foreach (char c in "mypassword".ToCharArray())
    password.AppendChar(c);

ProcessStartInfo psi = new ProcessStartInfo();
psi.WorkingDirectory = @"c:\build";
psi.FileName = Environment.SystemDirectory + @"\cmd.exe";
psi.Arguments = "/q /c build.cmd";
psi.UseShellExecute = false;
psi.UserName = "builder";
psi.Password = password;
Process.Start(psi);

Wenn Sie nicht erraten, diese batch-Datei baut meiner Anwendung (eine andere Anwendung als die, die diesen Befehl ausführt).

Den Prozess.Start(psi); Zeile liefert sofort eine Rückgabe, wie es sollte, aber die batch-Datei scheint gerade zu hängen, ohne Sie auszuführen. Irgendwelche Ideen?

EDIT: Siehe unten meine Antwort für den Inhalt der batch-Datei.

  • Die output.txt wird nie erstellt.

Ich fügte diese Zeilen:

psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
String outp = p.StandardOutput.ReadLine();

und trat durch Sie in den debug-Modus. Der code hängt an der ReadLine(). Ich bin ratlos!

Kannst du den code für die batch Datei, und Sie haben versucht emitting Echos von deiner batch-Datei, so dass Sie sehen konnte, dass es ab?

InformationsquelleAutor Josh Hinman | 2008-08-29

Schreibe einen Kommentar