iisnode - IIS7.5:405执行PUT请求时不允许使用的方法

时间:2012-03-28 09:42:09

标签: node.js iis-7.5 express iisnode

我开始使用iisnode和expressjs进行一些实验,以创建一个类似于节点的API。

所以在server.js上我创建了类似

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

但是,当我执行PUT请求时,我从IIS 7.5安装中获得405 Method not allowed

关于如何解决这个问题的任何想法?

BTW,我已经google了,并试图在不同的处理程序映射中添加PUT动词,但没有成功......

2 个答案:

答案 0 :(得分:22)

我现在终于找到了解决这个问题的方法,即WebDavModule阻止了我的PUT请求。

要解决此问题:

  1. 打开IIS管理器
  2. 转到您的应用程序配置并打开" Modules"
  3. 搜索WebDavModule并将其删除(右侧菜单)
  4. 然后它对我有用。

    ,在您的应用程序的web.config中添加

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

答案 1 :(得分:2)

一个原因可能是您的web.config没有将您正在进行的特定请求映射到iisnode处理程序。在这种情况下,请求由静态请求处理程序拾取,该处理程序不支持PUT方法并以405响应。

要解决此问题,您需要在web.config中注册iisnode处理程序:https://github.com/tjanczuk/iisnode/blob/master/src/samples/helloworld/web.config#L7

此外,如果您计划使用不以node.js文件名称结尾的URL(如上图所示),则需要使用URL重写模块告诉IIS确切的请求应该重写其URL以指向node.js入口点的URL。详情请见:http://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.html