2017-04-06 4 views
0

Ich habe nodejs Express-App entwickelt. Es funktioniert gut, wenn es auf dem Node-Server läuft. Aber nach dem Hosting auf dem iis-Server gibt es immer 'Bad Request' als Antwort. Get Anrufe funktionieren gut.iisnode gibt 'Bad Request' für Post-Methode

finden meine web.conf Datei

<?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 Datei wie folgt

'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')); 
}); 
+0

Können Sie dieses Problem lösen? Ich habe das gleiche Problem Hosting in VM mit IIS – CampDev

+0

@CampDev Bitte überprüfen Sie die Antwort. Für mich geht das. –

Antwort

0

ich dieses Problem könnte

<system.webServer> 
    <httpErrors existingResponse="PassThrough" /> 
</system.webServer> 

zu web.config durch Zugabe fixiert.

Ich hoffe, dies wird jedem anderen helfen.