远程服务器返回错误:(405) Method Not Allowed

Posted

技术标签:

【中文标题】远程服务器返回错误:(405) Method Not Allowed【英文标题】:The remote server returned an error: (405) Method Not Allowed 【发布时间】:2014-08-22 15:23:38 【问题描述】:

我试图研究这个问题,但失败了,因此我在这里问这个问题。我有一个调用 Web API 的 MVC 应用程序。其中一种方法返回 405 错误,我不知道为什么,尤其是同一控制器中的所有其他方法都可以正常工作。

这就是我从 MVC 端调用此方法的方式:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("0/api/Account/ArchiveAddress?addressId=1", uri, addressId));
request.Method = "Get";

try

     HttpWebResponse response = (HttpWebResponse)request.GetResponse();

catch (Exception e)

     return RedirectToAction("Error", "Error", new  error = e.Message );

其中 uri 是一个字符串:

http://localhost:52599

并且addressId是一个int

我在 Web API 端的方法是这样的:

[Route("ArchiveAddress")]
public IHttpActionResult ArchiveUserAddress(int addressId)

    var address = _addressRepo.Find(addressId);
    ...

正如我所说,我以完全相同的方式在 API 上调用许多不同的方法,它们都可以正常工作。只是这个不想表现。可能是什么原因造成的?

【问题讨论】:

【参考方案1】:

我认为您需要使用 [HttpGet] 属性来装饰您的操作方法 (ArchiveUserAddress),或者将其命名为以 Get... 开头的名称,例如GetArchiveUserAddress。就目前而言,它会匹配 POST 方法,这意味着没有 getter,因此您会遇到错误。

【讨论】:

以上是关于远程服务器返回错误:(405) Method Not Allowed的主要内容,如果未能解决你的问题,请参考以下文章

为啥 warp 会为输入错误的参数返回 HTTP 405 Method Not Allowed?

对于 Restful Web 服务,PUT 和 POST 获得 405 Method Not Allowed 错误

ApacheIISNginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。

jQuery ajax GET 返回 405 Method Not Allowed

Wildfly 允许 OPTIONS 方法但返回 405 Method not allowed

这是啥 405 Method Not Allowed svn 错误?