【问题标题】:Some of my controller actions are 404ing in my ASP.NET Core app我的一些控制器操作在我的 ASP.NET Core 应用程序中是 404
【发布时间】: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


【解决方案1】:

我相信您的默认路由将匹配 /home/numberarchivetasks。您的路线属性不以斜线开头,因此它是相对的,这意味着它可能类似于 /home/tasks/all/count - 您尝试过吗?

我建议将您的操作放在 TasksController 中(带有属性 [Route("[controller]")]),然后该操作可以有一个相对路径。

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2019-11-10
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2017-12-12
    • 2014-08-14
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多