#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
методу, что означает, что нет средства получения, отсюда и ошибка, которую вы получаете.