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

时间:2017-07-28 19:14:41

标签: c# node.js asynchronous post edgejs

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

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

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

问题是当我尝试使用Edge通过我的POST Web服务运行下面显示的异步方法时,我会得到第一个日志 - ' In Edge Task' - 但是我从来没有在底部记录日志 - '在同步通话中' - 和客户端我收到一个网络错误说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,所以我确信这不是问题。

请帮助,谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

所以我在这个问题的帮助下找到了我的问题的答案 - Starting a process with credentials from a Windows Service

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

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