通过 POST 服务在 C# 异步方法中调用 Edge.func 时ERR_CONNECTION_RESET错误



我还在 Edge 的 github 页面中提出了一个问题,链接在这里 https://github.com/tjanczuk/edge/issues/579

我正在尝试在我的 .NET 应用程序中利用 Edge 来运行一个快速节点程序来执行一些较小的视频处理。

我已经验证了javascript的工作 - 独立运行"节点测试.js测试了它。我已经通过创建一个小型 C# 控制台应用程序并测试来验证我正在正确调用和使用 Edge.func 方法,以查看当我在 CMD (testApp.exe( 中运行它时,视频处理是否通过使用 Edge 的节点工作(确实如此(。

问题是,当我尝试使用 Edge 通过我的 POST Web 服务运行下面显示的异步方法时,我得到了第一个日志 - "在边缘任务中" - 但我从未在底部获得日志 - "异步调用" - 客户端我收到一个网络错误,说失败的 net::ERR_CONNECTION_RESET。

public static async Task Start()
{
LogManager.Instance.WriteLog("In Edge Task");
var func = Edge.Func(@"
var ffmpeg = require('fluent-ffmpeg');
return function (data, callback) {
var proc2 = ffmpeg('testFile-0.webm')
.input('testFile-1.webm')
.on('error', function(err) {
callback(null, 'ERRORRRR');
})
.on('end', function() {
callback(null, '');
})
.mergeToFile('merged-fromNET.mp4', 'tempDir');
}
");
LogManager.Instance.WriteLog("in async call");
await func(null);
}

如果我从测试控制台应用程序调用它,这个异步任务 Start(( 方法可以正常工作......

我已经验证了我的后期服务是否已正确设置,因为不使用 Start.Wait(( 执行此方法,将其注释掉,服务可以正确执行。我已经在正确的目录中安装了必要的节点模块以及使用的视频文件和必要的 dll,所以我确定这不是问题所在。

请帮忙,谢谢你的时间。

所以我在这个问题的帮助下找到了我的问题的答案—— 使用 Windows 服务中的凭据启动进程

似乎Web服务是使用"网络服务"权限执行的,并且在检查Windows事件查看器时,我遇到了访问冲突 - 这意味着我需要以具有适当权限的用户身份执行此代码块。因此,我遵循了我链接到的问题中提供的逻辑,以便创建一个进程,该进程将执行我为执行我发布的代码块而设置的简单 exe。我必须小心地给我的用户适当的权限来访问带有exe的文件夹,仅此而已。

使用这种技术,似乎很容易设置一个使用 Edge https://github.com/tjanczuk/edge 执行节点.js逻辑的 Web 服务 - 谢谢 tjanczuk

最新更新