2017-07-27 4 views
0

Ich habe eine sehr einfache nodejs HTTPS-Server, den ich versuche, mit iisnode arbeiten, aber es scheint nicht, dass der Knoten-Prozess startet, so bekomme ich einen Fehler 500, wenn ich es versuche Navigiere dorthin.Iisnode nicht starten Knoten Prozess

const express = require('express'); 
const app = express(); 
const bodyParser = require('body-parser'); 
const fs = require('fs'); 
const cors = require('cors'); 
var https = require('https'); 

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

app.get('/', function (req, res) { 
    res.send('Hello World!') 
}); 

var secureServer = https.createServer({ 
    key: fs.readFileSync('private.key'), 
    cert: fs.readFileSync('certificate.pem') 
}, app).listen(process.env.PORT || 3443, function() { 
    console.log('Secure Server listening on port 3443'); 
}); 

Diese Anwendung startet gut, wenn ich Knoten server.js tun, aber wenn ich versuche, auf den Knoten des virtuellen Verzeichnisses zu verlassen, die durch die setupsamples.bat Script erstellt wurde, ist es nicht zu funktionieren scheint. Mein Web.config sieht auch wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> 
    </handlers> 
    <modules> 
     <remove name="MyAuthModule" /> 
    </modules> 
    <security> 
     <authorization> 
     <add accessType="Allow" users="?" /> 
     </authorization> 
    </security> 
    <rewrite> 
     <rules> 
     <rule name="mcServer"> 
      <match url="mcServer/*" /> 
      <action type="Rewrite" url="server.js" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

MyAuthModule ist ein benutzerdefiniertes Authentifizierungsmodul, das für mich in meiner Umgebung eingerichtet wurde, also wenn ich nicht diese entfernen Erklärung, ich erhalte eine Fehlermeldung über das Modul nicht existierend.

Ich legte server.js, die Web.config oben, und die Zertifikatsdateien in ein eigenes Verzeichnis mcServer in iisnode/www Verzeichnis angezeigt, die durch Ausführen des setupsample.bat Skript erstellt wurde. Wenn ich zu navigiere, erhalte ich einen 500 Fehler, aber wenn ich zu https://myUrl/node navigiere, zeigt es die verschiedenen verfügbaren Anwendungen an, und wie gesagt, der Knotenprozess läuft nicht, also denke ich, dass das Teil des 500 Fehlers ist Ich bekomme.

Es ist auch gut zu beachten, dass ich das URL-Rewrite-Modul installiert, so dass das Problem nicht sein sollte, und helloworld/readme.htm, aber wieder nehme ich an, dies ist, weil Knoten nicht gestartet hat.

Ich muss etwas total dummes tun, aber ich kann es nicht herausfinden.

Antwort

0

Es gab einige Dinge, die ich falsch war:

  • ich versuchte npm link <module_name> zu verwenden, aber das scheinbar mit IIS nicht funktioniert, also tat ich npm install für alle Module, die ich brauchte
  • Mein match url sollte /*, nicht mcServer/*
  • In meiner server.js Datei muss ich voranstellen app.get mit app.get('/mcServer/'