Ravi Kanasagra Ответов: 3

Веб-API после AJAX-вызов бросает ошибка http 405


Я звоню Asp.net веб-api Post methos, который имеет один параметр с именем value типа string.

Код как показано ниже:

In ValueController:

public IHttpActionResult Post(string value)
      {
          return Created(Request.RequestUri + "/" + "id=5", value);
      }


Jquery Calling Web Api:


$.ajax({
                    url: 'http://localhost:63022/api/values',
                    type: 'POST',
                    data: '{"value":"ravi"}',
                    contentType: "application/json;charset=utf-8",
                    crossDomain : true,
                    success: function (data) {
                        alert('success');
                    },
                    error: function (x, y, z) {
                        alert('error');
                    }
                });


Вопрос 1:
Когда я запускаю этот код и вызываю метод web api Post, используя вышеописанный вызов jquery ajax, я получаю Http error 405 method not allowed.

Вопрос 2:
Modification in ValueController, adding FromBody attribute


public IHttpActionResult Post([FromBody]string value)
       {
           return Created(Request.RequestUri + "/" + "id=5", value);
       }



Когда я запускаю этот код и вызываю метод web api Post, используя вышеописанный вызов jquery ajax, я получаю null в строковом значении параметра метода действия [Post([FromBody]строковое значение)].

Обязательно ли писать атрибут FromBody для метода Post для работы в вопросе 1?

Ребята, пожалуйста, помогите мне ответить на вопросы 1 и 2...

3 Ответов

Рейтинг:
2

Anele Ngqandu

Вот как я обычно пишу свой веб api

[HttpPost]
[Route("api/home/activity/{activityID}")]
public object getComments(long activityID)
{

          //Search by activityID code will be here
       // return new { status = !hasError ? "Success" : "Fail" };
}


Рейтинг:
0

Sebastiaan Meijerink

Попробуйте добавить атрибут [HttpPost] в свою функцию.


Рейтинг:
0

Erick_Mexico

Иногда полезно включить следующий код в файл контроллера:

public HttpResponseMessage Options()
{
   return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
}