2016-06-15 5 views
2

У меня есть интересное время, пытаясь запустить 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 веб-приложения, но это не помогло.

Любые дальнейшие предложения будут оценены.

ответ

0

Удаление и переустановка пакета Edge.js NuGet исправила это для меня.

Для переноса из IIS Express в IIS вам понадобится установка iisnode.

Смежные вопросы