Ajax не работает после развертывания в Azure - PullRequest
0 голосов
/ 11 января 2019

Я занимаюсь разработкой веб-приложения с использованием ASP.NET MVC Core. На моем локальном компьютере все работает отлично, но всякий раз, когда я развертываюсь в Azure, вызовы Ajax всегда получают 404 Not Found.

Вот фрагмент одного метода контроллера:

[HttpGet]
public JsonResult GetPublicHolidays()
{
    var events = adminService.GetPublicHolidays();
    return new JsonResult(events);
}

А вот вызов Ajax:

$.getJSON('@Url.Action("GetPublicHolidays","Admin")',

1 Ответ

0 голосов
/ 11 января 2019

По умолчанию URL-адрес действия в контроллере ASP.NET равен , а не имени метода . В ASP.NET многое происходит по соглашению .

Например, это контроллер API ASP.NET Core по умолчанию:

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    // GET api/values
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

Как видно из комментария, маршрут <baseUrl>/api/values. Этот маршрут состоит из базового URL-адреса, префикса api и имени контроллера . Поскольку вы добавляете HttpGetAttribute, ASP.NET знает, что это метод Get.

Итак, учитывая этот контроллер:

public class RandomController : ControllerBase
{
    [HttpGet]
    public ActionResult<IEnumerable<string>> WhateverWeirdMethodName()
    {
        return new string[] { "value1", "value2" };
    }
}

URL для запроса GET будет <baseUrl>/api/random

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...