【问题标题】:HTTP Client putAsync (Error 404 Method not Allowed)HTTP 客户端 putAsync(错误 404 方法不允许)
【发布时间】:2015-11-12 14:26:45
【问题描述】:

我尝试使用托管在远程服务器上的 WEB API 更新对象。我很好地恢复了对象,但是在更改时,答案给出了不允许的 404 方法。我测试了在附近同事的一台机器上托管我的服务。它运作良好。进行配置或其他需要什么? 非常感谢。

client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage  responsse = client.PutAsJsonAsync("api/Collaborateurs/" + coll.matricule_collaborateur, coll).Result;

if (responsse.IsSuccessStatusCode) {
}

错误:

{StatusCode: 405, ReasonPhrase: 'Method Not Allowed', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Date: Thu, 12 Nov 2015 14:28:10 GMT
  Server: Microsoft-IIS/7.5
  X-Powered-By: ASP.NET
  Content-Length: 1343
  Allow: GET
  Allow: HEAD
  Allow: OPTIONS
  Allow: TRACE
  Content-Type: text/html
}}

【问题讨论】:

    标签: asp.net httpclient


    【解决方案1】:

    WebDAV 会干扰动词 PUT。如果服务器上存在 WebDAV 并且您不使用它,请尝试卸载它。

    【讨论】:

      【解决方案2】:

      您也可能需要联系远程服务器的管理员。 PUT 有时会被网络交换机/路由器阻止。 IE。 很可能无法用代码解决这个问题。尝试改用 POST。

      【讨论】:

      • 我使用 angularjs 作为 WEB 客户端 API,我得到了错误 405 - preflight 的响应有无效的 HTTP,(选项)。已经有很多类似的问题,但我无法解决我的问题。你可以在stackoverflow.com/questions/33752356/angular-http-put-rest看到我的帖子
      • 那么可能 PUT(和 OPTIONS?)请求只是在服务器(主机)端被禁止(由路由器或目标服务器配置的管理员)。就像我说的,你不能用任何代码做任何事情,试着让托管服务提供商为你允许这些。你为什么不想考虑使用 POST 呢?此外,您可以尝试其他不禁止 PUT 请求的托管服务提供商。
      • 我在本地主机中测试服务器,但无法配置 webconfig.cs。 POST 是否也可以与我的功能更新一起使用,有什么好处,这是我的更新服务:stackoverflow.com/questions/33752356/angular-http-put-rest
      • 这只是一个与 REST 规范兼容的约定。 POST 和 PUT 在性能或其他方面没有实际区别。只需在代码中将单词“PUT”替换为单词“POST”(在角度中使用 $http.post 并使用 [HttpPost] 作为控制器属性)。如果您使用的是本地 IIS,并且可以更改配置,则可以在 applicationhost.config 中启用 PUT(将“PUT”添加到允许的请求列表中),并像 DonO 建议的那样禁用 webDAV。
      • 如果更改 put --> post : 我加载资源失败:服务器响应状态为 415(不支持的媒体类型)
      猜你喜欢
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 2014-12-12
      • 2017-10-16
      • 2011-06-21
      • 1970-01-01
      • 2019-11-11
      • 2019-07-16
      相关资源
      最近更新 更多