У меня есть интересное время, пытаясь запустить Edge.js из проекта ASP.NET MVC. Из документации Edge основное консольное приложение:Запуск Edge.js из проекта ASP.NET MVC
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, «Использование Node.js через Edge.js в веб-приложениях ASP.NET не отличается от приложения консоли .NET». Однако это самая простая реализация в приложении ASP.NET, поэтому должна быть какая-то разница. Согласно предложению в документации, я также попытался скопировать подкаталог node_modules
в папку bin
веб-приложения, но это не помогло.
Любые дальнейшие предложения будут оценены.