我已经在服务器上设置了 IISNode,并按照指南获取了一个简单的 hello world node.js 应用程序运行它。它工作正常,并且可以通过互联网从外部访问。但是,当我尝试合并我现有的 express 应用程序时,就像 node/express 甚至不存在一样。
这是我的 web.config 文件:
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
</system.webServer>
</configuration>
那是 IIS 应用程序的根目录,以及我的主要 express 文件 app.js。有趣的是,如果我访问 localhost/TestApp/app.js,我会返回:
Cannot GET /TestApp/app.js
但是,如果我尝试使用不同的文件,例如 localhost/TestApp/public/htm/index.htm,我会取回位于那里的文件(如预期的那样以 HTML 格式)。此外,如果我尝试进行服务器调用(例如 localhost/TestApp/GetUsernames)。
更有趣的是,如果我弄乱了端口(例如 app.listen(process.env.PORT2);),当我尝试访问 localhost/TestApp.js 时会得到这个:
> iisnode encountered an error when processing the request. > > HRESULT: 0x2 HTTP status: 500 HTTP reason: Internal Server Error
如果端口是正确的(app.listen(process.env.PORT2);),我得到Cannot GET /TestApp/app.js,所以看起来IISNode正在执行app.js(当我弄乱了端口),但似乎没有任何效果。
我该如何解决这个问题,或者至少诊断问题?
谢谢你。