jQuery POST,错误405方法不允许

时间:2012-11-06 19:30:46

标签: javascript jquery asp.net-mvc-4 iis-7.5

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

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

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

抛出错误的javascript是:

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

3 个答案:

答案 0 :(得分:18)

当请求HTTP动词(GET,PUT,POST,DELETE,HEAD等)并由指定的处理程序不支持/禁止时,IIS抛出405.

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

enter image description here

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

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

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

  • ExtensionlessUrlHandler-ISAPI-4.0_32bit / 64bit
  • StaticFile

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

enter image description here

从那里点击"请求限制"然后"动词"

确保文本区域中存在相应的动词。

enter image description here

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


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

WebDAV

答案 1 :(得分:0)

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

$.post('@Url.Content("~/Attach/UpdateAttach")'

答案 2 :(得分:0)

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

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

我的Web应用程序位于通过Godaddy控制面板创建的根目录中..并且POST请求已得到确认..

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

然后每当我在这个测试文件夹上测试这个jQuery时......我得到了那个错误[405方法不允许] ..

解决方案非常简单:

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

希望这将有助于那些共享主机