从ASP.NET MVC项目运行Edge.js.

时间:2016-06-15 10:59:33

标签: asp.net-mvc node.js asp.net-mvc-4 edge.js

我有一段时间试图从ASP.NET MVC项目中运行Edge.js。从Edge文档中,基本控制台应用程序是这样的:

public static async Task Start()
{
    var func = Edge.Func(@"
    return function (data, callback) {
        callback(null, 'Node.js welcomes ' + data);
    }");

    Console.WriteLine(await func(".NET"));
}

static void Main(string[] args)
{
    Start().Wait();
}

这对我的机器没问题。下一步是创建一个ASP.NET MVC项目,并尝试从表单驱动的控制器操作中运行相同的脚本。默认情况下,ASP.NET MVC项目在IIS Express上运行。

这是控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public async Task<ActionResult> TestEdge()
    {
        try
        {
            var func = Edge.Func(@"
            return function (data, callback) {
                callback(null, 'Node.js welcomes ' + data);
            }");

            Console.WriteLine(await func(".NET"));
            return RedirectToAction("Index");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.GetBaseException().Message);
            return RedirectToAction("Index");
        }
    }
}

不幸的是,拨打Edge.Func的电话爆炸了。

是个例外
System.DllNotFoundException was unhandled
Message: An unhandled exception of type 'System.DllNotFoundException' occurred in EdgeJs.dll
Additional information: Unable to load DLL 'node.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我全局安装了Edge(通过npm install edge -g)。

我尝试将node.dll文件直接复制到bin文件夹中,但会生成BadImageFormat异常。

根据Edge.js文档,&#34;在ASP.NET Web应用程序中通过Edge.js使用Node.js与.NET控制台应用程序中没有什么不同&#34;。但是,这是ASP.NET应用程序中最简单的实现,因此必须有一些区别。根据文档中的建议,我还尝试将node_modules子目录复制到Web应用程序的bin文件夹中,但这没有帮助。

任何进一步的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

卸载并重新安装Edge.js NuGet包为我修复了这个问题。

要从IIS Express迁移到IIS,您需要安装iisnode