【发布时间】:2017-04-13 15:13:04
【问题描述】:
这是我遇到的一个有趣的问题。我的控制器就像
public HomeController()
{
TaskRepo = new ArchiveTasksRepository();
}
// GET: /<controller>/
public IActionResult Index()
{
return View();
}
[Route("tasks/all/count")]
[HttpGet]
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
public ActionResult NumberArchiveTasks()
{
return Json(TaskRepo.GetTaskCount());
}
我还有很多其他端点,比如NumberArchiveTasks 一个。这是针对我按照教程编写的 ASP.NET Core 应用程序。当我在本地运行应用程序时,所有端点都工作。但是当我部署到远程服务器上的 IIS 时,Index 一个可以工作,而其他的则不能;他们 404。我不确定这是否是 HttpGet 属性,我使用的是 ActionResult 而不是 IActionResult,或者它到底是什么。也许是别的东西。知道我该如何解决这个问题,还是我应该猜测并检查直到它起作用?
【问题讨论】:
-
您正在尝试返回 404 的 URL 是什么?
-
会不会是因为你指定的路由是相对的,不是以斜杠开头的?
-
@benjrb 这将是一个 xhr
GET请求到http://example.com/tasks/all/count,例如。然而,http://example.com似乎正确地击中了Index动作,这是我想要弄清楚的部分。在 JavaScript 中,它通过 URL"tasks/all/count"调用。 -
@user7127000 您错过了 URL 中的控制器名称。我认为您需要 example.com/home/tasks/all/count?
-
@benjrb 没关系,因为我的创业公司有
template: "{controller=Home}/{action=Index}/{id?}");
标签: c# asp.net iis asp.net-core