我开发了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'));
});
答案 0 :(得分:0)
我可以通过添加
解决此问题<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
到web.config。
希望这对任何其他人都有帮助。