11

我正在尝试使用 IIS 7.5 托管 ASP.NET MVC4 Web 应用程序。调试应用程序时一切正常(我假设这是因为 Windows 身份验证)。但是,当我发布应用程序并浏览到它时,我收到 405 Method not allowed 错误:

POST http://localhost/ 405 (Method Not Allowed)
send 
i.extend.ajax 
i.(anonymous function)
(anonymous function)

从我一直在阅读的内容来看,这要么是 IIS 中的处理程序映射问题,要么是 web.config 中需要一些配置。无论哪种方式,我都没有找到正确的解决方案。谁能告诉我我的 web.config 应该包含在所有 POSTS 中的内容吗?和/或如何在 IIS 中设置正确的处理程序映射,因为我是 Web 开发的新手,发现选项数量有点压倒性。

引发错误的 javascript 片段如下:

$.post("/", { latitude: locLat, longitude: locLon, username: $('#onlineUsers').attr('itemid') });
4

3 回答 3

19

当请求 HTTP 动词(GET、PUT、POST、DELETE、HEAD 等)并且指定的处理程序不支持/不允许时,IIS 会抛出 405。

您需要打开 IIS 管理器 -> 默认网站 -> 处理程序映射(或特定于您的 Web 应用程序的处理程序映射)

在此处输入图像描述

在这里,您需要使用处理程序映射,因为其中之一不允许“POST”动词。

由于您没有发布到任何特定页面(.aspx、.ashx 等),因此很难确定导致您问题的确切处理程序。

感兴趣的处理程序可能是:

  • ExtensionlessUrlHandler-ISAPI-4.0_32bit /64bit
  • 静态文件

一旦您确定您的请求被路由到的处理程序,双击它以打开对话框。

在此处输入图像描述

从那里点击“请求限制”,然后点击“动词”

确保文本区域中存在适当的动词。

在此处输入图像描述

正如我之前提到的,我不确定哪个处理程序正在处理您的请求,因为您没有发布到任何特定页面(您可能需要重新编写 URL 以适当地路由您的请求)。


如果上述方法失败,您可能需要检查是否安装了 WebDAV Publishing 并将其删除(需要重新启动)。

网络视频

于 2012-11-06T21:26:08.800 回答
0

也许你应该像这样修改你的 post'URl 格式:

$.post('@Url.Content("~/Attach/UpdateAttach")'
于 2014-02-28T02:30:56.833 回答
0

这里的一些用户拥有共享主机而不是专用服务器,因此他们可能无法访问 IIS 控制面板。

这是我的情况,这就是我发现的..

我在通过 Godaddy 控制面板创建的根目录中有我的 Web 应用程序.. 并且确认了 POST 请求..

然后我使用 FileZilla 为我的 jquery 创建了一个测试文件夹 ..(注意我使用了 FileZilla,所以 Web 应用程序和 GoDaddy 的 IIS 不知道我希望这个文件夹成为我的应用程序的一部分)

然后每当我在这个测试文件夹上测试这个 jQuery.. 我得到那个错误 [405 Method not allowed]..

解决方案非常简单:

我将我的测试页面从 FileZilla 创建的测试文件夹中移出,并将其放置在通过 Godaddy 控制面板创建的文件夹中(在这种情况下,IIS 将知道该页面是我的 Web 应用程序的一部分 :))

希望对共享主机有帮助

于 2014-03-08T08:13:41.467 回答