我有以下内容
[HttpPost]
public IActionResult LaunchExternalProcess()
{
Process.Start("C:\\Windows\\System32\\calc.exe");
return Ok();
}
这在我的本地计算机上运行得很好,但是当部署在 IIS 10(Windows 2016)上时,我没有收到任何错误,但它不会在服务器上启动计算。
我只想通过页面上的按钮调用外部 .exe。
这是我正在使用的 javascript,它也适用于我的本地,但在服务器上没有错误,并且显示成功消息
$.ajax({
url: "/Admin/LaunchExternalProcess",
type: "POST",
cache: false,
success: function () {
console.log("success");
}
});
首先,启动这样的外部流程是一个非常糟糕的主意。所以,请,不要在真实的应用程序中这样做。您很可能会造成更多的问题和安全漏洞,而这是值得的。有几种更强大的架构模式可用于处理请求管道之外的外部流程。
也就是说,这里的问题是calc.exe
无法在您的服务器上启动。然而你的方法并不知道这一点,因为你只是告诉它开始一个Process
,您不会检查该进程处于什么状态。
var process = Process.Start("C:\\Windows\\System32\\calc.exe");
if (process == null) // failed to start
{
return InternalServerError();
}
else // Started, wait for it to finish
{
process.WaitForExit();
return Ok();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)