部署到Azure后Ajax无法正常工作

时间:2019-01-11 09:20:14

标签: ajax azure asp.net-core-2.0

我正在使用ASP.NET MVC Core开发Web应用程序。一切在我的本地计算机上都可以正常运行,但是每当我部署到Azure时,Ajax调用始终会得到一个RewriteRule ^game/([^/]+) game.php?game=$1 [L]

这是一个控制器方法的摘要:

404 Not Found

这是Ajax调用:

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

1 个答案:

答案 0 :(得分:0)

默认情况下,ASP.NET Controller中某个动作的URL 不是方法的名称。在ASP.NET中,by convention上有很多事情要做。

作为示例,这是默认的ASP.NET Core API控制器:

[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" };
    }
}

GET请求的URL为<baseUrl>/api/random