Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 远程服务器返回错误:(405)方法不允许_Asp.net_Asp.net Web Api_Routing_Asp.net Web Api2_Http Status Code 405 - Fatal编程技术网

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

Asp.net 远程服务器返回错误:(405)方法不允许,asp.net,asp.net-web-api,routing,asp.net-web-api2,http-status-code-405,Asp.net,Asp.net Web Api,Routing,Asp.net Web Api2,Http Status Code 405,我试图研究这个问题,但是失败了,所以我在这里问这个问题。我有一个调用WebAPI的MVC应用程序。其中一个方法返回405错误,我不知道为什么,尤其是同一控制器中的所有其他方法都工作得非常好 这就是我从MVC端调用此方法的方式: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("{0}/api/Account/ArchiveAddress?addressId={1}", uri, addressId)

我试图研究这个问题,但是失败了,所以我在这里问这个问题。我有一个调用WebAPI的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上调用了许多不同的方法,它们都工作得很好。只是这个人不想表现。可能是什么原因造成的?

我认为您需要使用
[HttpGet]
属性来修饰您的操作方法(
ArchiveUserAddress
),或者将其命名为以
Get…
开头的东西,例如
GetArchiveUserAddress
。目前,它确实与
POST
方法相匹配,这意味着没有getter,因此会出现错误