Удаленный сервер вернул ошибку: (405) Метод не разрешен

#asp.net #asp.net-web-api #routing #asp.net-web-api2 #http-status-code-405

#asp.net #asp.net-web-api #маршруты #asp.net-web-api2 #http-status-code-405

Вопрос:

Я пытался исследовать проблему, но потерпел неудачу, поэтому задаю этот вопрос здесь. У меня есть приложение MVC, вызывающее Web API. Один из методов возвращает ошибку 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

Мой метод в конце веб-API выглядит следующим образом:

 [Route("ArchiveAddress")]
public IHttpActionResult ArchiveUserAddress(int addressId)
{
    var address = _addressRepo.Find(addressId);
    ...
  

Как я уже сказал, я вызываю множество различных методов в API точно таким же образом, и все они работают нормально. Просто этот не хочет себя вести. Что может быть причиной этого?

Ответ №1:

Я думаю, вам нужно украсить свой метод действия ( ArchiveUserAddress ) [HttpGet] атрибутом или назвать его чем-то, что начинается с Get... , например GetArchiveUserAddress . В нынешнем виде он будет соответствовать POST методу, что означает, что нет средства получения, отсюда и ошибка, которую вы получаете.