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

我开始用iisnode和expressjs做一些实验来创build一个像REST API一样的节点。

所以在server.js上我创build了类似的东西

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

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

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

顺便说一句,我google了,并试图添加PUT动词在这里和那里在不同的处理程序映射,没有成功…

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

要解决该问题:

  1. 打开你的IISpipe理器
  2. 转到您的应用程序configuration并打开“模块”
  3. searchWebDavModule并将其删除(右侧菜单)

然后它为我工作。

或者 ,在你的应用程序的web.config中添加

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

一个原因可能是你的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