iisnode - IIS7.5: 405 Метод не разрешен при выполнении запроса PUT - PullRequest
7 голосов
/ 28 марта 2012

Я начал экспериментировать с iisnode и expressjs , чтобы создать REST-подобный API с узлом.

Итак, на server.js я создал что-то вроде

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

Однако, когда я выполняю запрос PUT, я получаю 405 Method not allowed из установки IIS 7.5.

Есть идеи, как решить эту проблему?

Кстати, я уже погуглил и попытался добавить глаголы PUT тут и там в разные отображения обработчиков, но безуспешно ...

Ответы [ 2 ]

22 голосов
/ 29 марта 2012

Я наконец-то нашел решение этой проблемы, а именно WebDavModule блокировал мои PUT-запросы.

Для решения проблемы:

  1. Откройте диспетчер IIS
  2. Перейдите в конфигурацию вашего приложения и откройте «Модули»
  3. Поиск в WebDavModule и удаление его (меню справа)

Тогда это сработало для меня.

В качестве альтернативы , в файле web.config вашего приложения добавьте

<system.webServer>
    ...
    <modules>
       <remove name="WebDAVModule"/>
    </modules>
</system.webServer>
2 голосов
/ 28 марта 2012

Одной из причин может быть то, что ваш web.config не отображает конкретный запрос, который вы делаете, обработчику iisnode.В этом случае запрос принимается статическим обработчиком запросов, который не поддерживает методы PUT и отвечает 405.

Чтобы исправить это, вам нужна регистрация обработчика iisnode, как это в вашем файле web.config: https://github.com/tjanczuk/iisnode/blob/master/src/samples/helloworld/web.config#L7

Кроме того, если вы планируете использовать URL, который не заканчивается именем вашего файла node.js (как, кажется, имеет место выше), вам нужно будет использовать модуль перезаписи URL, чтобы сообщитьIIS, какие запросы должны переписывать свои URL-адреса, чтобы они указывали на URL-адрес точки входа вашего node.js.Подробнее на: http://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.html

...