WebAPI - HTTP405: ПЛОХОЙ МЕТОД - используемый глагол HTTP не поддерживается с использованием JavaScript - PullRequest
0 голосов
/ 16 января 2020

Я размещаю сообщение в своем веб-API на Azure с удаленной веб-страницы. Я использую следующее:

    $.ajax({
        type: "POST",
        url: BaseHref + "/api/PIRknownPersons/",
        data: data,
        contentType: "application/json; charset=UTF-8",
        success: function (response) {
            //alert('Saved known ');
        },
        error: function (e) {
             //alert('Unable to save Known ' );
        }
    });

Я могу ошибаться, но похоже, что удаленная публикация заблокирована на Azure, так как код работает нормально, когда я делаю это локально. Это тот случай? Есть ли на Azure параметр, который я могу отключить?

PIRknownPersons -

namespace TripWeb.Controllers
{
    public class PIRknownPersonsController : ApiController
    {
        private TripDB3Entities db = new TripDB3Entities();

        // POST: api/PIRknownPersons
        [ResponseType(typeof(bool))]
        public HttpResponseMessage Post([FromBody]ApiPIRknownPerson APIPIRknownPerson)
        {
            var inst = db.Institutions.Where(x => x.RemoteID == APIPIRknownPerson.RemoteID).FirstOrDefault();
            if (inst == null)
            {
                return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Action Not Authorized");
            }

            var newPIRknownPerson = ObjectMapper.GetEfApiPIRknownPerson(APIPIRknownPerson);

            try
            {
                db.PIRknownPersons.Add(newPIRknownPerson);
                db.SaveChanges();
                return Request.CreateResponse<bool>(HttpStatusCode.OK, true);
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message);
            }
        }

    }
}

1 Ответ

0 голосов
/ 24 января 2020

Я нашел проблему - или, по крайней мере, у меня это получилось. Я сделал две вещи:

  • Включил CORS на Azure через панель управления
  • Добавил [System.Web.Http.AcceptVerbs("GET", "POST")] к началу файлов моего контроллера.

Не знаю, нужны ли оба, но теперь все равно работает.

...