javascript 错误405:无法访问

lzfw57am  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(263)

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

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

从我所阅读到的内容来看,这要么是IIS中的处理程序Map有问题,要么是需要在web. config中进行一些配置。无论哪种情况,我都没有找到正确的解决方案。有人能告诉我web.config应该在所有帖子中包含什么吗?和/或如何在IIS中设置正确的处理程序Map,因为我是Web开发的新手,发现选项的数量有点让人不知所措。
抛出错误的javascript代码如下所示:

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

jobtbby31#

当请求HTTP predicate (GET、PUT、POST、DELETE、HEAD等)但指定的处理程序不支持/不允许该 predicate 时,IIS将抛出405。
您需要打开IIS管理器-〉默认网站-〉处理程序Map(或特定于您的Web应用程序的处理程序Map)

在这里,您将需要使用处理程序Map,因为其中一个处理程序Map不允许使用“POST” predicate 。
由于您没有发布到任何特定的页面(.aspx、.ashx等),因此很难确定导致问题的确切处理程序。
感兴趣的处理程序可能是:

  • 无扩展URL处理程序-ISAPI-4.0_32位/64位
  • 静态文件

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

在那里点击“请求限制”,然后点击“动词”
确保文本区域中存在相应的动词。

正如我前面提到的,我不确定哪个处理程序正在处理您的请求,因为您没有发布到任何特定的页面(您可能有URL重写到位,路由您的请求适当)。
如果上述操作失败,您可能需要检查是否安装了WebDAV Publishing并将其删除(需要重新启动)。

c9x0cxw0

c9x0cxw02#

也许你应该修改你的帖子的URL格式如下:

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

2g32fytz3#

有些用户使用的是共享主机而不是专用服务器,因此他们可能无法访问IIS控制面板。
这是我的案子,这是我发现的。
我有我的web应用程序在根目录上创建通过Godaddy控制面板。。和POST请求被确认。
然后我使用FileZilla为我的jquery创建了一个测试文件夹..(注意我使用了FileZilla,所以Web应用程序以及GoDaddy的IIS并不知道我希望这个文件夹成为我们应用程序的一部分)
然后每当我在这个测试文件夹上测试这个jQuery时..我得到那个错误[405不允许的方法]..
解决办法非常简单:
我将测试页面从FileZilla创建的测试文件夹中移出,并将其定位在通过Godaddy控制面板创建的文件夹中(在这种情况下,IIS将知道此页面是我的Web应用程序的一部分:))
希望这将有助于那些共享主机

相关问题