远程服务器返回错误:(405)方法不允许

时间:2014-07-01 23:53:02

标签: asp.net asp.net-web-api routing asp.net-web-api2 http-status-code-405

我试图研究这个问题,但失败了,所以我在这里问这个问题。我有一个调用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 个答案:

答案 0 :(得分:1)

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