興味深いことに、Edge.jsをASP.NET MVCプロジェクトから実行しようとしています。 Edgeのドキュメントから、基本的なコンソールアプリケーションは次のとおりです。ASP.NET MVCプロジェクトからEdge.jsを実行
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)
エッジがグローバルに(npm install edge -gを介して)インストールされています。
node.dll
ファイルを直接binフォルダにコピーしようとしましたが、BadImageFormat例外が生成されました。
Edge.jsのドキュメントによると、「ASP.NET WebアプリケーションでEdge.js経由でNode.jsを使用することは、.NETコンソールアプリケーションと同じです。しかし、これはASP.NETアプリケーションで最も簡単に実装できるため、いくつかの違いがあります。ドキュメントの提案通り、node_modules
サブディレクトリをWebアプリケーションのbin
フォルダにコピーしようとしましたが、これは役に立たなかった。
これ以上の提案はありません。