我正在使用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);
}
答案 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