【发布时间】:2020-09-20 20:12:28
【问题描述】:
我有一个运行良好的 WebAPI,但需要添加调用服务器上的 EXE 以使用视频运行某些任务的能力,服务器是我们的机器并运行 IIS 来托管 WebAPI。
我已经尝试使用 Process() 并调用它到我编写的 cmd.exe 文件,但问题是用户是 IUSER 并且这不起作用,因为视频处理需要使用系统硬件所以需要是当前登录的 Windows 用户。
出于明显的安全原因,我不想为 IUSER 授予此特权,因此我正在寻找另一种方法来调用并将数据传递给 EXE 或后台任务(短时间运行
这一切都在我们完全控制的服务器上。
当前代码:
string exeLoc = Environment.ExpandEnvironmentVariables(baseEXELocation);
using var process = new Process();
process.StartInfo.FileName = exeLoc;
process.StartInfo.Arguments = $"{command}";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += (sender, data) =>
{
if (!String.IsNullOrEmpty(data.Data))
{
Console.WriteLine(data.Data);
consoleData += data.Data;
}
};
process.Start();
process.BeginOutputReadLine();
var exited = process.WaitForExit(1000 * 10); // (optional) wait up to 10 seconds
谢谢
【问题讨论】:
-
您的问题解决了吗?如果您的问题得到解决,那么我请求您将有用的建议标记为答案。这将帮助面临同样问题的其他人。
标签: c# iis asp.net-web-api .net-core