Я конвертирую приложение Asp.Net Core 2.2 Mvc в 3.0;когда я пытаюсь реорганизовать код для использования UseEndpoints вместо UseMvc, маршруты не распознаются.
Ниже приведен рабочий код файла startup.cs, использующий UseMvc
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/EventLog/Error");
app.UseHsts();
}
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseRequestLocalization();
app.UseAuthentication();
app.UseMvc(endpoints =>
{
endpoints.MapRoute("Grid", "Grid/{action}/{view}",
new
{
Controller = "Grid",
Action = "View"
});
endpoints.MapRoute("default", "{controller=Portal}/{action=Index}/{id?}");
});
}
* 1005. * И это переработанный код для UseEndpoints
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/EventLog/Error");
app.UseHsts();
}
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseRequestLocalization();
app.UseAuthentication();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("Grid", "Grid/{action}/{virtualAction}",
new
{
Controller = "Grid",
Action = "View"
});
endpoints.MapControllerRoute("default", "{controller=Portal}/{action=Index}/{id?}");
});
}
Когда я запускаю приложение с кодом UseEndpoints, я получаю сообщение об ошибке из своего пользовательского AuthorizationHandler, поскольку в httpContextAccessor.HttpContext.Request.RouteValues нет значений. Если я удаляю код MapControllerRoute для маршрута Grid, маршруты по умолчанию будут работать с AuthorizationHandler. Можно ли использовать несколько шаблонов маршрутов контроллера при использовании UseEndpoints?