我试图研究这个问题,但失败了,所以我在这里问这个问题。我有一个调用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上调用了许多不同的方法,它们都可以正常工作。只是这个人不想表现。可能导致什么?
答案 0 :(得分:1)
我认为您需要使用ArchiveUserAddress
属性修饰您的操作方法([HttpGet]
),或者将其命名为以Get...
开头的内容,例如GetArchiveUserAddress
。就目前而言,它会与POST
方法匹配,这意味着没有吸气剂,因此您会得到错误。