Foo.cmd не выводит строки в процессе (на веб-сайте)

У меня проблема с пониманием входа и выхода класса ProcessStartInfo в.NET. Я использую этот класс для выполнения программ.exe, таких как FFmpeg, без каких-либо проблем.

Но когда я использую ProcessStartInfo для запуска программы.cmd, такой как простой foo.cmd, содержащий только @echo Hello world, он ничего не выводит.

    ProcessStartInfo oInfo = new ProcessStartInfo(@"C:\Program Files (x86)\itms\foo.cmd")
    {
        UseShellExecute = false,
        RedirectStandardError = true,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    };

    using (Process p = new Process())
    {
        p.StartInfo = oInfo;
        p.OutputDataReceived += new DataReceivedEventHandler(transporter_OutputDataReceived);

        p.Start();

        p.BeginOutputReadLine();

        p.WaitForExit();
    }

private void transporter_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Response.Write(e.Data + " - line<br/>");
}

Я видел множество примеров, когда люди используют cmd.exe для запуска программы.cmd, и я пробовал это, но безуспешно. Программа просто бесконечно загружается.

    ProcessStartInfo oInfo = new ProcessStartInfo("cmd", "/c start foo.cmd")
    {
        UseShellExecute = false,
        RedirectStandardError = true,
        RedirectStandardOutput = true,
        CreateNoWindow = true,
        WorkingDirectory = @"C:\Program Files (x86)\itms"
    };

Программа foo.cmd успешно работает и выводит данные при использовании инструмента командной строки в Windows и на Mac.

Может кто-нибудь, пожалуйста, демистифицируйте это для меня.

Спасибо

РЕДАКТИРОВАТЬ

Код ведет себя правильно при локальном выполнении. Проблема возникает, когда я запускаю код на нашем сайте. Либо программе не разрешено выполняться, либо вывод каким-то образом отключен.

Только cmd.exe возвращает вывод «cmd», «/c dir»» , например. возврат информации о текущем содержимом папки.

Может ли это на самом деле быть проблемой разрешения?

8
задан Marle1 20 July 2012 в 09:05
поделиться