2012-03-28 14 views
6

Empecé a experimentar con iisnode y expressjs para crear un REST como API con nodo.iisnode - IIS7.5: 405 Método no permitido al realizar la solicitud PUT

Así que en la server.js creé algo así como

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

Sin embargo, cuando yo haga la solicitud PUT consigo un 405 Method not allowed de la instalación de IIS 7.5.

¿Alguna idea sobre cómo solucionar esto?

Por cierto, ya en Google y trató de añadir los verbos poner aquí y allá en las diferentes asignaciones de controlador sin éxito ...

+0

Es 99% seguro de que algo en IIS, así que estoy bastante seguro de que se ha perdido algo allí. Sin embargo, no puedo mirar realmente en su configuración de IIS :-) –

+0

Es por eso que no puedo entender por qué alguien, excepto un masoquista, querría usar IIS para alojar el nodo ... – UpTheCreek

+0

:) Creo que es solo por el entorno de despliegue en el que se encuentra. Puede tener restricciones para ejecutar servidores web de IIS ... en mi caso, porque me gustaría implementarlo en AppHarbor ya que es más adecuado (desde el punto de vista del costo) para mi experimentos (que Heroku por ejemplo). – Juri

Respuesta

21

Finalmente encontré la solución a este problema, es decir, el WebDavModule estaba bloqueando mis solicitudes PUT.

para resolver el problema:

  1. Abra el Administrador de IIS
  2. Goto configuración de la aplicación y de "módulos" abiertos
  3. Buscar WebDavModule y retirarlo (menú de la derecha)

Entonces funcionó para mí.

Como alternativa, en el web.config de la aplicación añadir

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

Una de las razones puede ser que su web.config no se asigna el particular, solicitud que está haciendo al controlador iisnode. En ese caso, la solicitud es recogido por el controlador de solicitudes estática que no soporta métodos PUT y responde con un 405.

Para solucionar este problema se necesita un registro manejador iisnode como este en su web.config: https://github.com/tjanczuk/iisnode/blob/master/src/samples/helloworld/web.config#L7

Además, si planea usar una URL que no termine con el nombre de su archivo node.js (como parece ser el caso anterior), necesitará usar un módulo de reescritura de URL para decirle a IIS exactamente qué solicitudes deberían tener sus URL reescritas para que apunten a la URL de su punto de entrada node.js Lea más en: http://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.html

+0

Gracias por su respuesta, sin embargo, ya encontré las publicaciones de su blog y configuré mi aplicación en consecuencia ... sin éxito. Sin embargo, he encontrado la solución ahora. (vea abajo) – Juri

Cuestiones relacionadas