iisnode为post方法提供'Bad Request'

时间:2017-04-06 07:35:11

标签: node.js express iis iisnode

我开发了nodejs express app。在节点服务器上运行时工作正常。但是在iis服务器上托管后,它总是给出“错误请求”作为响应。 接听电话工作正常。

以下是我的web.conf文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>         
      <handlers>
           <add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
     </handlers>
      <rewrite>
           <rules>

                <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">                    
                    <match url="^server.js\/debug[\/]?" />
                </rule>

                <rule name="StaticContent">
                     <action type="Rewrite" url="public{REQUEST_URI}"/>
                </rule>

                <rule name="DynamicContent">
                     <conditions>
                          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
                     </conditions>
                     <action type="Rewrite" url="server.js"/>
                </rule>

           </rules>
      </rewrite>

      <iisnode     
      nodeProcessCommandLine="C:\Program Files\nodejs\node.exe"
      nodeProcessCountPerApplication="1"
      maxConcurrentRequestsPerProcess="1024"
      maxNamedPipeConnectionRetry="100"
      namedPipeConnectionRetryDelay="250"      
      maxNamedPipeConnectionPoolSize="512"
      maxNamedPipePooledConnectionAge="30000"
      asyncCompletionThreadCount="0"
      initialRequestBufferSize="4096"
      maxRequestBufferSize="65536"
      watchedFiles="*.js;iisnode.yml"
      uncFileChangesPollingInterval="5000"      
      gracefulShutdownTimeout="60000"
      loggingEnabled="false"
      logDirectory="iisnode"
      debuggingEnabled="true"
      debugHeaderEnabled="false"
      debuggerPortRange="5058-6058"
      debuggerPathSegment="debug"
      maxLogFileSizeInKB="128"
      maxTotalLogFileSizeInKB="1024"
      maxLogFiles="20"
      devErrorsEnabled="true"
      flushResponse="false"      
      enableXFF="false"
      promoteServerVars=""
      configOverrides="iisnode.yml"

     />
     <modules>
       <remove name="WebDAVModule"/>
    </modules>
   </system.webServer>
 </configuration>

server.js文件如下

'use strict';

// Module dependencies.
var express = require('express'),
    path = require('path'),
    fs = require('fs'),
    methodOverride = require('method-override'),
    morgan = require('morgan'),
    bodyParser = require('body-parser');

var app = module.exports = exports.app = express();

app.locals.siteName = "IOS IBE";

app.use(express.static(__dirname + '/public'));

app.get('/*', function (req, res) {
    res.sendFile(__dirname + '/public/index.html');
});

app.use(methodOverride());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));


// Start server
var port = process.env.PORT;
app.listen(port, function () {
    console.log('DP Admin server listening on port %d in %s mode', port, app.get('env'));
});

1 个答案:

答案 0 :(得分:0)

我可以通过添加

解决此问题
<system.webServer>
   <httpErrors existingResponse="PassThrough" /> 
</system.webServer>

到web.config。

希望这对任何其他人都有帮助。