一个控制器给出了#34;找不到这个本地主页页面"

时间:2018-04-10 12:27:33

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

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

  

找不到此localhost页面未找到网页的网页   地址:http://localhost:57880/Car在Google上搜索localhost   57880 Car HTTP ERROR 404

每个控制器都有一个路由名称。所以我将CarController的route-name更改为" 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();
    }
}

2 个答案:

答案 0 :(得分:1)

如果没有看到你的代码就很难调试你的问题,但我可以提供一些推测。

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

[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();
    }
}

答案 1 :(得分:0)

发生这种情况是因为我已将.net核心1 Razor Page复制到我的.net核心2.2项目中。我在剃刀页面上添加了@page声明,一切正常。