2016-06-15 4 views
2

興味深いことに、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フォルダにコピーしようとしましたが、これは役に立たなかった。

これ以上の提案はありません。

答えて

0

Edge.js NuGetパッケージをアンインストールして再インストールすると、この問題が修正されました。

IIS ExpressからIISに移行するには、インストールが必要です(iisnode)。

関連する問題