[英].Net core 5 set default startup route
我是老派 ASP.Net 和 AngularJS 开发人员,我现在正在开发现有的 .Net 5 Core 应用程序(将迁移到 .Net Core 6)。 这对我来说是新技术,我仍在解决问题。 我期望非常简单的一件事是更改 Web UI 的起点,但我无法按预期完成这项工作。 现在,应用程序在默认的控制器路由 Home 上启动。 我想改变它,而不是登陆主页(通过 myapp.mydomain.com),我希望它登陆另一个控制器,客户端(通过 myapp.mydomain.com/Clients)。 我尝试在定义默认路由的 Startup.cs 中进行更改:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
//pattern: "{controller=Home}/{action=Index}/{id?}");
pattern: "{controller=Clients}/{action=Index}/{id?}");
});
客户端控制器:
namespace MyCompany.MyApp.Controllers
{
[Authorize]
public class ClientsController : Controller
{
private readonly ILogger<ClientsController> _logger;
private readonly IClientService _service;
private readonly IAppVersionService _appVersionService;
private readonly IIisService _iisService;
private readonly IWindowsServices _windowsServices;
private readonly IAuthHelpers _authHelpers;
public ClientsController(ILogger<ClientsController> logger, IClientService service,
IAppVersionService appVersionService, IIisService iisService, IWindowsServices windowsServices, IAuthHelpers authHelpers)
{
_logger = logger;
_service = service;
_appVersionService = appVersionService;
_iisService = iisService;
_windowsServices = windowsServices;
_authHelpers = authHelpers;
}
[HttpGet]
[Route("/Clients")]
public async Task<IActionResult> Index(int? pageNumber)
{
_logger.LogInformation("Client Index starting...");
await SyncAppVersionsWithS3();
await AddVersionsToViewData();
ViewBag.Error = TempData["Error"];
ViewBag.Success = TempData["Success"];
var paginatedClients = await PaginatedList<ClientDto>
.CreateAsync(_service.Query(), pageNumber ?? 1, 10);
return View(paginatedClients);
}
但这会导致启动时出现 404。 回到旧的 asp.net 时代,我只需 rt-单击一个 aspx 文件并选择设置为启动。 我只想在这里做同样的事情,而不是一团糟。 我怎么做? 谢谢!
问题是默认控制器(客户端)中的[Route]
属性。 如果您已定义[Route("Clients")]
,则只能使用域/客户端访问。
解决方案1:删除路由属性,因为Clients, Clients/Index, ""
是自动处理的(program.cs中的MapRoute)
[HttpGet]
public async Task<IActionResult> Index(int? pageNumber)
{
...
}
解决方案2 多路由:(这种情况下不需要更改默认路由)
[HttpGet]
[Route("")]
[Route("Clients")]
[Route("Clients/Index/{pageNumber?}")]
public async Task<IActionResult> Index(int? pageNumber)
{
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.