Server.MapPath并从ASP.NET应用程序运行命令行实用程序

时间:2012-10-13 19:43:24

标签: asp.net windows

我需要使用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"

2 个答案:

答案 0 :(得分:0)

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

如果您了解后果并且服务器是您自己的,您可以将应用程序池的身份更改为授权用户,然后您的应用程序可以毫不犹豫地执行此类操作。

干杯

答案 1 :(得分:0)

这里有几件事需要检查。

首先要确保string path = Server.MapPath("/Utilities/");是有效路径且utility.exe位于正确的位置。

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

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