我需要使用Process
从ASP.NET应用程序运行可执行文件。 .exe文件位于ASP.NET项目内 - “ProjectRoot / Utilities / utility.exe”
为什么此代码无法运行它:
string path = Server.MapPath("/Utilities/");
string args = " etc etc";
Process p = Process.Start(new ProcessStartInfo(path + "utility.exe", args));
p.WaitForExit(3000);
我也试过"\\utility.exe"
。
答案 0 :(得分:0)
答案取决于发生的异常的类型。顺便说一下,如果应用程序池的标识(与Windows应用程序中的进程位置相同)设置为受限用户(默认情况下),则由于安全问题,您无法在服务器上执行进程。
如果您了解后果并且服务器是您自己的,您可以将应用程序池的身份更改为授权用户,然后您的应用程序可以毫不犹豫地执行此类操作。
干杯
答案 1 :(得分:0)
这里有几件事需要检查。
首先要确保string path = Server.MapPath("/Utilities/");
是有效路径且utility.exe
位于正确的位置。
你说它没有抛出异常,所以utility.exe
的调用至少应该有效。但是,utility.exe
可以吞下它反过来遇到的任何异常(取决于它是如何编码的),这可能就是它似乎无法正常工作的原因。
最重要的是,您的args
变量可能正在指定utility.exe
访问的文件或其他资源。如果它确实吞下了异常,那么如果应用程序池标识无法访问资源,则可能会屏蔽权限错误。