我有一个.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();
}
}
答案 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声明,一切正常。