2012-03-28 5 views
6

Ich begann, einige Experimente mit Iisnode und expressjs zu tun, um eine REST wie API mit Knoten zu erstellen.iisnode - IIS7.5: 405 Methode nicht erlaubt, wenn PUT Anfrage

Also auf der server.js habe ich so etwas wie

app.put("/test", function(req, res){ 
    ... 
}); 

Allerdings, wenn ich die PUT-Anfrage ausführen ich ein 405 Method not allowed aus der IIS 7.5-Installation erhalten.

Irgendeine Idee, wie man das löst?

BTW, gegoogelt ich schon und versucht, die PUT Verben hier und da in den verschiedenen Handler Mappings ohne Erfolg ...

+0

Es ist zu 99% sicher etwas in IIS so bin ich ziemlich sicher, dass Sie da etwas verpasst. Allerdings kann ich nicht wirklich in Ihre IIS-Konfiguration schauen :-) –

+0

Das ist, warum ich einfach nicht verstehen kann, warum jemand außer einem Masochist IIS verwenden möchte, um Knoten zu hosten ... – UpTheCreek

+0

:) Ich denke, es ist nur wegen Die Implementierungsumgebung, in der Sie sich befinden. Möglicherweise haben Sie die Einschränkungen, IIS-Webserver nur auszuführen ... in meinem Fall, weil ich ihn in AppHarbor bereitstellen möchte, da er (aus Kostengründen) besser für mich geeignet ist Experimente (als Heroku zum Beispiel). – Juri

Antwort

21

Ich habe jetzt endlich die Lösung für dieses Problem gefunden, nämlich das WebDavModule blockiert meine PUT Anfragen.

das Problem zu beheben:

  1. Ihre IIS-Manager
  2. Goto Anwendungskonfiguration und öffnen Sie "Module"
  3. Suche WebDavModule öffnen und entfernen (Menü auf der rechten Seite)

Es hat dann für mich funktioniert.

Alternativ, in web.config Ihrer Anwendung hinzufügen

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

Ein Grund sein kann hinzufügen, dass Ihre web.config nicht die besondere abbildet Anforderung, die Sie an den iisnode-Handler stellen. In diesem Fall wird die Anforderung durch die statischen Request-Handler aufgenommen, die nicht PUT Methoden und reagiert mit diesem 405.

unterstützt zu beheben benötigen Sie eine iisnode Handler Registrierung wie dies in Ihrem web.config: https://github.com/tjanczuk/iisnode/blob/master/src/samples/helloworld/web.config#L7

Wenn Sie eine URL verwenden möchten, die nicht mit dem Namen Ihrer node.js-Datei endet (wie es oben der Fall zu sein scheint), müssen Sie ein URL-Rewrite-Modul verwenden, um IIS genau mitzuteilen, welche Anforderungen benötigt werden Ihre URLs werden so umgeschrieben, dass sie auf die URL Ihres Einstiegspunkts node.js zeigen. Lesen Sie mehr unter: http://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.html

+0

Thx für deine Antwort, allerdings habe ich deine Blogbeiträge schon gefunden und meine App entsprechend konfiguriert ... ohne Erfolg. Ich habe jetzt die Lösung gefunden. (siehe unten) – Juri