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

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

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

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

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


person Bartosz    schedule 01.07.2014    source источник


Ответы (1)


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

person djikay    schedule 01.07.2014