使用iisnode,nodejs和node-soap库时,Win32应用程序无效

时间:2013-10-11 14:31:05

标签: node.js iis soap iis-7 iisnode

我在设置IIS 7,Windows Server 2008上使用iisnode和node.js 0.10.20运行的Node.js / Node-soap服务时遇到了一些问题。这个相同的设置,使用相同的代码,在内部的另一台服务器上运行,并且工作正常。 问题是没有记录设置过程,并且无法将其全部用于将其迁移到新服务器。我在Node和IISnode中都没有先验知识。

这是打印的错误消息:

  

iisnode在处理请求时遇到错误。

     

HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误您   正在接收此HTTP 200响应,因为   system.webServer/iisnode/@devErrorsEnabled配置设置为   '真正的'。

     

除了node.exe进程的stdout和stderr的日志之外,   考虑使用调试和ETW跟踪来进一步诊断   问题

     

node.exe进程生成的最后64k输出到stderr   如下所示:

     

应用程序抛出未捕获的异常并终止:错误:   %1不是有效的Win32应用程序。

     

\ node_modules \皂\ node_modules \节点外籍\构建\推出\ node_expat.node

at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (<Path to application>\node_modules\soap\node_modules\node-expat\lib\node-expat.js:4:13)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
  • 我已将以下内容添加到我的Node.js文件中:

现在我在网上找到的,尝试但没有工作的内容如下:

  1. 从这Stack Overflow question我尝试了两件事:

    • 将此部分添加到我的Node.js文件中。

      <iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.jade" nodeProcessCommandLine="\program files\nodejs\node.exe"/>
      
    • 创建了一个符号链接:

      mklink /D "C:\Program Files (x86)\nodejs" "C:\Program Files\nodejs"
      
  2. 如果我尝试别的话会更新。

    所有帮助将不胜感激。

    更新1 : 我确保在IIS中设置了Enable32-Bit Applications = False.,并修复了VS 2010 x64 redist二进制文件

1 个答案:

答案 0 :(得分:1)

此错误消息表明\ node_modules \ soap \ node_modules \ node-expat \ build \ Release \ node_expat.node的位数与IIS工作进程(w3wp.exe)的位数不匹配。由于您似乎使用64位工作进程运行IIS(启用32位应用程序== False),它可能表明node_expat.node是32位二进制文​​件?