【问题标题】:One controller gives "This localhost page can’t be found"一个控制器给出“找不到这个本地主机页面”
【发布时间】:2018-09-20 01:47:39
【问题描述】:

我有一个 .Net Core 2 Api。一些控制器(UserController、CarController)。如果我启动 Api,我可以浏览到 UserController,它会向我显示用户列表,完美! 当我浏览到 CarController 时,它给了我一个错误:

找不到此本地主机页面 没有找到该网络的网页 地址:http://localhost:57880/Car 谷歌搜索 localhost 57880 汽车 HTTP 错误 404

每个控制器都有一个路由名称。所以我将 CarController 的路由名称更改为“DummyTest”。我重新启动了 API,浏览到 DummyTest,它可以工作了!用户仍然正常工作。 为什么?...我似乎无法弄清楚为什么“Car”会给出 404 并且具有不同路线的相同控制器(DummyTest)可以工作。

我在 StackOverflow 上找到了这个:ASP.NET Core This localhost page can’t be found,但这对我来说不是解决办法。

编辑

这是给出 404 的控制器的代码:

[Route("Car")]
public class CarController : Controller
{
    private readonly ICarService _carService;

    public CarController(ICarService carService)
    {
        _carService= carService;
    }

    [HttpGet]
    public List<Car> Get()
    {
        return _carService.GetCars().ToList();
    }
}

下面是控制器的代码:

[Route("User")]
public class UserController : Controller
{
    private readonly IUserService _userService;

    public UserController(IUserService userService)
    {
        _userService = userService;
    }

    [HttpGet]
    public List<User> Get()
    {
        return _userService.GetUsers().ToList();
    }
}

【问题讨论】:

  • 添加控制器和路由的代码示例。你也使用命名约定吗?
  • @J.Doe 查看我的编辑

标签: c# error-handling routing .net-core asp.net-core-mvc


【解决方案1】:

我错过了 launchSettings.json 文件中“IIS Express”配置文件的“launchUrl”:“swagger”。不知何故,它被删除了。

【讨论】:

    【解决方案2】:

    这发生在我身上,因为我将 .net core 1 Razor Page 复制到了我的 .net core 2.2 项目中。我向 Razor 页面添加了 @page 声明,一切正常。

    【讨论】:

      【解决方案3】:

      不看代码就很难调试问题,但我可以提供一些推测。

      如果您使用的是基于属性的路由,则可能是您指定了路由模板而不是路由名称。

      [Route("CarController")]
      public class CarController : Controller
      {
          public IActionResult Index()
          {
              return View();
          }
      }
      

      由于控制器的命名约定,如果您导航到 http://localhost:xxxxx/Car,这将为您提供 404。

      试试这个路由模板:

      [Route("Car")]
      public class CarController : Controller
      {
          public IActionResult Index()
          {
              return View();
          }
      }
      

      【讨论】:

      • 查看我的编辑。我添加了代码,这表明我使用了正确的命名约定。
      猜你喜欢
      • 2019-11-09
      • 2021-04-17
      • 2020-08-05
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多