我一直在阅读如何从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());