6

我已经搜索了与类似问题相关的大量不同的现有 SO 问题,但我无法找到与我的问题相关的任何内容。

我有以下 jQuery 代码:

$.ajax({
   url: "Index.aspx/DeclineRequest"
   , type: 'POST'
   , contentType: 'application/json; charset=utf-8'
   , dataType: 'json'
   , data: JSON.stringify({ RequestId: requestId })
});

我正在使用一种非常相似的技术在另一个 ASP.NET Web 应用程序上发布数据,并且效果很好。但是,此应用程序返回以下错误:

“网络错误:405 方法不允许 - http://localhost:57255/ .....”

我找不到这两个应用程序有什么不同,所以我很困惑为什么这不起作用。

我能想到的这两个应用程序之间的唯一区别是,正在运行的是 .NET 2.0,而无法运行的是 .NET 3.5。

我尝试将以下内容添加到我的web.config中,但仍然收到相同的 405 错误:

<webServices>
   <protocols>
     <add name="HttpPost"/>     
     <add name="HttpPostLocalhost"/>   
   </protocols>      
</webServices>

我该如何解决这个问题?

更新 (16:40):我已将此应用程序移至 IIS,并且不再返回 405 错误。然而,我们的开发环境只是 localhost。为什么这只会在本地主机上出错?

4

6 回答 6

1

也许迟到了,但是,尝试添加到您的 Web.Config 文件中:

< handlers >
   ....
       < remove name="WebDAV" />
   ....
< /handlers >

本文解释了可能导致问题的原因:

http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications

于 2015-04-29T08:52:02.253 回答
1

POST 方法经常会出现 405 错误。您可能试图在网站上引入某种输入表单,但并非所有 ISP 都允许处理表单所需的 POST 方法。

所有 405 错误都可以追溯到 Web 服务器的配置和管理对网站内容的访问的安全性,因此您的 ISP 应该很容易解释。

http://www.checkupdown.com/status/E405.html

我会打开 IIS Logging 来检查请求。也让 Fiddler 看看幕后发生了什么

于 2012-04-19T12:17:17.367 回答
0

检查请求你发送到服务器
的参数denseRequest是一个具有RequesIdOR属性的对象string(或其他数据类型)名称RequestId 因为在后一种情况下你可以只发送数据JSON或纯字符串,RequestId=requestId
所以尝试用JSON.stringify({ RequestId: requestId })更多的东西替换合适的

于 2012-04-19T13:06:07.883 回答
0

url: "Index.aspx/DeclineRequest" 不应该是 url: "Index.aspx?DeclineRequest" 应该吗?

很抱歉这个相当明显的建议,我以前没有见过这样的网址。你在重写吗?

于 2012-04-19T12:10:52.863 回答
0

我的猜测是:在请求中,您说返回的内容将是 JSON,但是您返回的纯字符串格式不正确...尝试返回正确的 JSON 或将内容类型更改为纯文本以进行测试...

于 2012-05-09T08:22:42.750 回答
-3

从您的代码中删除此代码 dataType: 'json' 并运行

于 2012-12-14T09:47:57.383 回答