我开始使用iisnode和expressjs进行一些实验,以创建一个类似于节点的API。
所以在server.js上我创建了类似
的东西app.put("/test", function(req, res){
...
});
但是,当我执行PUT请求时,我从IIS 7.5安装中获得405 Method not allowed
。
关于如何解决这个问题的任何想法?
BTW,我已经google了,并试图在不同的处理程序映射中添加PUT动词,但没有成功......
答案 0 :(得分:22)
我现在终于找到了解决这个问题的方法,即WebDavModule阻止了我的PUT请求。
要解决此问题:
然后它对我有用。
或,在您的应用程序的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