0

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

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

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

问题是,当我尝试使用 Edge 通过我的 POST Web 服务运行下面显示的异步方法时,我得到了第一个日志——“在 Edge 任务中”——但我从来没有在底部得到日志——“在异步调用中”——并且客户端我收到一个网络错误,提示 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() 方法,它可以正常工作...

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

请帮忙,谢谢你的时间。

4

1 回答 1

0

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

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

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

于 2017-08-01T18:15:02.907 回答