HTTP 错误 400.605。在 IIS 上部署 NodeJS 应用程序

HTTP ERROR 400.605. Deploying NodeJS app on IIS

我在将我的应用程序部署到 IIS 服务器时遇到错误。我使用 URL Rewrite 和 IISNode。我给了 IUSR 和 IIS_IUSRS 的所有权限,我遇到了很多错误,但我不能通过这个。我将非常感谢你的帮助。

I've got this error

我的 web.config 文件如下所示:

    <configuration>
   <system.webServer>
     <handlers>
       <add name="iisnode" path="src/app.js" verb="*" modules="iisnode" />
     </handlers>
     <rewrite>
       <rules>
         <rule name="app">
           <match url="/*" />
           <action type="Rewrite" url="src/app.js" />
         </rule>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:8080/{R:1}" />
                </rule>
       </rules>
     </rewrite>
     
     <security>
       <requestFiltering>
         <hiddenSegments>
           <add segment="node_modules" />
         </hiddenSegments>
       </requestFiltering>
     </security>    
     
   </system.webServer>
 </configuration>

我的 app.js 文件如下所示:

const express = require('express');
const cors = require('cors');

const app = express();

app.get('/', (req, res, status)=>{
    return res.status(200).json({
        "message": "Hello world!"
    });
});

app.use(cors());
app.use(express.json());

app.listen(8080, () => {
  console.log('App listening on port 8080')
});

从报错信息分析可以确定问题是ARR模块请求异常导致的,主要是URL重写规则的语法错误,会导致这个 400.605 错误。建议使用排除法,先禁用所有ARR规则,再逐步梳理有语法问题的规则。

这里是同一个问题,您可以作为参考:ARR The request cannot be routed because it has reached the Max-Forwards limit. The server may be self-referencing itself in request routing topology