【问题标题】:iisnode encountered an error when processing the requestiisnode在处理请求时遇到错误
【发布时间】:2014-07-24 13:52:27
【问题描述】:

我正在尝试使用用节点 js 编写的服务器端检查 angularjs 应用程序,这是我在通过 webmatrix 运行时遇到的错误

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

HRESULT: 0x2 
HTTP status: 500 
HTTP reason: Internal Server Error 

您收到此 HTTP 200 响应是因为 system.webServer/iisnode/@devErrorsEnabled 配置设置为 '真实'。

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

node.exe 进程没有向 stderr 写入任何信息或 iisnode 无法捕获此信息。常见的原因是 iisnode 模块无法创建日志文件来捕获 node.exe 的 stdout 和 stderr 输出。请检查身份 运行 node.js 应用程序的 IIS 应用程序池已读取 并写入对服务器上目录的访问权限 node.js 应用程序位于。或者,您可以禁用日志记录 通过设置 system.webServer/iisnode/@loggingEnabled 元素 web.config 为“假”。

有人知道怎么解决吗?

【问题讨论】:

    标签: node.js angularjs


    【解决方案1】:

    您的 iisnode 似乎无法写入其日志文件,可能是因为它没有写入权限。如果您有权访问服务器,那么您可以在应用程序的文件夹中检查 iisnode 文件夹,这是 iisnode 默认尝试写入其日志的位置。

    在您获得此日志信息之前,您会被卡住,因为您看到的 500 错误仅告诉您该错误已发生在某处的服务器上。您需要日志来为您提供继续操作所需的信息。

    唯一的另一种选择是在本地运行整个程序并使用节点检查器(我使用grunt-node-inspector)之类的工具来调试 nodeJS 代码以查看发生了什么。

    【讨论】:

      【解决方案2】:

      您的应用程序池似乎没有足够的权限写入当前文件夹。

      1. 您可以编辑权限以授予 IIS_IUSRS 组对该文件夹的写入权限

      2. 进入高级设置菜单并在 Process Model -> Identity 下将用户帐户更改为已具有写入权限的用户。

      【讨论】:

      • 你说的是哪个文件夹?
      • @James D 正在谈论应用程序文件夹的根目录……虚拟目录在哪里。在 IIS7 中,转到您的站点 - 操作(右侧) - 基本设置 - 物理路径。他的#1 解决方案是正确的 解决方案。 #2 有效,但只是最后的手段。
      • 我已授予文件夹及其工作的权限,但几个小时后它再次出现错误。我错过了什么?
      【解决方案3】:

      我通过运行setupsamples.bat 文件解决了这个问题。这会添加权限和其他必要的配置。我的路径是C:\Program Files\iisnode\setupsamples.bat

      【讨论】:

      • 我试过了,但仍然得到同样的错误信息。
      【解决方案4】:

      对我来说没有权限问题,因为当我在服务器中执行 console.log() 时,我在 iisnode forlder 中获得了日志。

      我将所有 Express 放在一个 try 代码块中,并且在我使用的 try 中记录了异常,我发现由于某种原因 iisnode 在 dist/dist/index.html 而不是 dist/index.html 中查找

      一旦我修复了错误,一切都已解决。

      【讨论】:

        【解决方案5】:

        右键单击您的应用程序根目录后,从“高级安全”中允许用户“IIS_IUSRS”的“完全控制”。

        Reference

        【讨论】:

          【解决方案6】:

          当我尝试运行服务器时,我遇到了三个问题。我解决了这个问题:

          1. 我没有手动写端口,例如 3000,而是添加了process.env.PORT。它自己决定了它的端口。

          2. 授予写入日志文件夹的权限。我通过在我的 web.config 文件中设置 logginEnabled="false" 解决了这个问题。

          3. 删除 console.log() 命令。它将输出视为错误。

          index.js

          const express = require("express");
          const app = express();
          var path = require("path");
          const port = process.env.PORT;
          
          app.get("/", (req, res) => {
            res.send({ appName: "animal-cdn" });
          });
          
          app.use(express.static(path.join(__dirname, "public")));
          app.listen(port, () => {
            // console.log(`Example app listening at http://localhost:${port}`);
          });
          

          web.config 文件:

          <configuration>
              <system.webServer>
              
                  <validation validateIntegratedModeConfiguration="false" />
                  <!-- indicates that the server.js file is a node.js application 
                  to be handled by the iisnode module -->
                   <iisnode 
                           loggingEnabled="false"
                           debuggingEnabled="true"
                        />
          
                  <handlers>
                      <add name="iisnode" path="index.js" verb="*" modules="iisnode"/>
                  </handlers>
                  
                  <rewrite>
                      <rules>
                          <rule name="myapp">
                              <match url="/*" />
                              <action type="Rewrite" url="index.js" />
                          </rule>
                          <rule name="HTTPS Redirect" stopProcessing="true">
                              <match url="(.*)" />
                              <conditions>
                                  <add input="{HTTPS}" pattern="^OFF$" />
                              </conditions>
                              <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
                          </rule>
                      </rules>
                  </rewrite>
          
              </system.webServer>
          </configuration>
          

          【讨论】:

            猜你喜欢
            • 2015-10-20
            • 2020-02-02
            • 2022-01-22
            • 2018-08-03
            • 2016-01-02
            • 1970-01-01
            • 1970-01-01
            • 2020-07-19
            • 1970-01-01
            相关资源
            最近更新 更多