我遇到过需要在 IIS 网站上执行 .cmd 程序的情况。这是一个用于验证和传输文件的第三方程序,因此我别无选择。
我通过以编程方式在新进程中启动该程序来实现此目的。
对 .exe 文件采用这种方法效果很好。我收到了程序的标准输出。但是当我尝试对 .cmd 文件执行相同操作时,情况并非如此。没有收到标准输出。
该代码在我的本地计算机上完美运行,因此我认为问题出在 IIS 配置上。可能是用户或文件限制。
有人可以给我指明正确的方向吗?
编辑这是我使用的 C# 代码。
ProcessStartInfo info = new ProcessStartInfo();
info.WindowStyle = ProcessWindowStyle.Hidden;
info.CreateNoWindow = true;
info.FileName = AppDomain.CurrentDomain.BaseDirectory + @"export\foo.cmd";
//replacing foo.cmd with foo.exe works
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
using (Process process = Process.Start(info))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Response.Write(result);
}
}
答案1
我自己找到了解决方案。我已将我的发现发布在堆栈溢出。
事实上,这是一个 IIS AppPool 用户问题,因此在这里发布问题并非完全没有希望。