我正在尝试使用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') });
答案 0 :(得分:18)
当请求HTTP动词(GET,PUT,POST,DELETE,HEAD等)并由指定的处理程序不支持/禁止时,IIS抛出405.
您需要打开IIS管理器 - >默认网站 - >处理程序映射(或特定于Web应用程序的处理程序映射)
在这里,您需要使用处理程序映射,因为其中一个不允许" POST"动词。
由于您没有发布到任何特定页面(.aspx,.ashx等),因此很难确定导致问题的确切处理程序。
感兴趣的处理程序可能是:
确定您的请求被路由到的处理程序后,双击它以打开对话框。
从那里点击"请求限制"然后"动词"
确保文本区域中存在相应的动词。
正如我之前提到的,我不确定哪个处理程序正在处理您的请求,因为您没有发布到任何特定页面(您可能正在重写URL以适当地路由您的请求)。
如果上述操作失败,您可能需要检查是否已安装WebDAV Publishing并将其删除(需要重新启动)。
答案 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应用程序的一部分:))
希望这将有助于那些共享主机