0

我需要使用Process. .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"了。

4

2 回答 2

0

这里有几件事要检查。

第一件事是确保这string path = Server.MapPath("/Utilities/");是一条有效的路径并且utility.exe位于正确的位置。

你说它不会抛出异常,所以调用至少应该是有效的utility.exe 但是,utility.exe 可能会吞下它反过来遇到的任何异常(取决于它是如何编码的),这可能是它似乎不起作用的原因。

最重要的是,您的args变量可能正在指定要访问的文件或其他资源utility.exe。如果它确实吞下了异常,那么如果应用程序池身份无权访问资源,它可能会掩盖权限错误。

于 2012-10-14T01:06:02.493 回答
0

答案取决于发生的异常的类型。顺便说一句,如果应用程序池的身份(与 Windows 应用程序中的进程相同)设置为受限用户(默认情况下),由于安全问题,您无法在服务器上执行进程.

如果你知道后果并且服务器是你自己的,你可以将应用程序池的身份更改为授权用户,那么你的应用程序可以毫不犹豫地做这样的事情。

干杯

于 2012-10-13T19:50:06.810 回答