从C#/ ASP.NET中运行时,命令行程序永远不会完成

时间:2011-11-27 21:14:07

标签: c# asp.net process system.diagnostics processstartinfo

我一直在阅读如何从C#ASP.NET应用程序中执行Win32命令行程序,出于某种原因,以下代码在执行期间永远不会完成,无限期地被卡住 output = p.StandardOutput.ReadToEnd();行。

从本地调试服务器(从Visual Studio中按F5)执行代码时效果很好,但是当通过浏览器通过完整URL(myexample.com/testapp)访问它时,调试器从未超过output=...线。

    ProcessStartInfo info = new ProcessStartInfo(@"FetchIntranetPageSpecial.exe");
    info.Arguments = "hostname";
    info.UseShellExecute = false;
    info.RedirectStandardOutput = true;
    info.RedirectStandardError = true;
    info.RedirectStandardInput = true;
    info.CreateNoWindow = true;

    Process p = System.Diagnostics.Process.Start(info);
    p.Start();

    // Capture the output
    output = p.StandardOutput.ReadToEnd();  // debugger does not move past this line
    p.Close();

.exe是一个简单的http请求应用程序,不访问本地文件或任何东西,输出结果到控制台。

我认为这可能是一个权限问题,所以为了调试目的,将FetchIntranetPageSpecial.exe权限设置为“EVERYONE,EVERYTHING” - 在通过localhost访问时仍然可以正常工作,但在远程访问时仍然会挂起。

关于我接下来可以尝试的任何指示?

编辑:我也阅读了此页面Program doesn’t terminate when using processes,但在这种情况下,调试器在此行上进入无限期“等待”状态:

while (read.Peek() >= 0)      // stuck on this line
    Console.WriteLine(read.ReadLine());

0 个答案:

没有答案