【问题标题】:The remote server returned an error: (405) Method Not Allowed远程服务器返回错误:(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 上调用许多不同的方法,它们都可以正常工作。只是这个不想表现。可能是什么原因造成的?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多