【问题标题】:iisnode - IIS7.5: 405 Method not allowed when performing PUT requestiisnode - IIS7.5:执行 PUT 请求时不允许使用 405 方法
【发布时间】:2012-04-11 21:23:03
【问题描述】:

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

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

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

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

你知道如何解决这个问题吗?

顺便说一句,我已经用谷歌搜索过,并尝试在不同的处理程序映射中到处添加 PUT 动词,但没有成功...

【问题讨论】:

  • 这是 99% 确定 IIS 中的某些内容,所以我很确定您错过了那里的某些内容。但是,我无法真正查看您的 IIS 配置 :-)
  • 这就是为什么我无法理解为什么除了受虐狂之外的任何人都想使用 IIS 来托管节点...
  • :) 我想这只是因为您所在的部署环境。您可能会受到限制,只能运行 IIS 网络服务器......在我的情况下,因为我想将它部署到AppHarbor 因为它更适合(从成本的角度)我的实验(例如 Heroku)。

标签: node.js iis-7.5 express iisnode


【解决方案1】:

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

【讨论】:

  • 感谢您的回答,但是我已经找到了您的博客文章并相应地配置了我的应用程序......没有任何成功。不过,我现在找到了解决方案。 (见下文)
【解决方案2】:

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

解决问题:

  1. 打开 IIS 管理器
  2. 转到您的应用程序配置并打开“模块”
  3. 搜索 WebDavModule 并将其删除(右侧菜单)

然后它对我有用。

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

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

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 2021-08-16
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多