我在尝试从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项目,并尝试从表单驱动的控制器操作运行相同的脚本。默认情况下,IIS MVC项目在ASP.NET 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文档,“在ASP.NET web应用程序中通过Edge.js使用Node.js与在.NET控制台应用程序中没有什么不同”。但是,这是ASP.NET应用程序中最简单的实现,因此一定有一些区别。根据文档中的建议,我还尝试将node_modules子目录复制到web应用程序的bin文件夹中,但这没有帮助。
任何进一步的建议都将不胜感激。
发布于 2016-06-20 21:55:55
卸载并重新安装Edge.js NuGet软件包已为我修复了此问题。
要从IIS Express迁移到IIS,您需要安装iisnode。
https://stackoverflow.com/questions/37833522
复制相似问题