Я обновил решение с 2.2 до 3.1. В 2.2 все шло гладко. После обновления у меня возникли проблемы с маршрутизацией.
Невозможно выполнить маршрутизацию к контроллеру другого проекта в решении.
С 2.2 я использовал
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}");
routes.MapRoute(
name: "default",
template: "{controller=Account}/{action=Login}/{id?}");
});
Я пытался изменить его на
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(
name: "Quote",
areaName: "Quote",
pattern: "Quote/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapControllerRoute("default", "/{action}/{id?}", new { action = "Index", controller = "Home" });
});
Но это не помогло. Я загружаю сборки, но, похоже, не работает с версией 3.1. NET core.
var mvcBuilder = services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
foreach (var assemblyPlugin in pluginsInfoList)
{
// Register controller from modules
mvcBuilder.AddApplicationPart(assemblyPlugin.Assembly);
}
mvcBuilder.AddControllersAsServices();
mvcBuilder.AddViewComponentsAsServices();
services.Configure<RazorViewEngineOptions>(options =>
{
options.ViewLocationExpanders.Add(new SynapseCore.Services.ThemeControl.TenantViewLocationExpander());
options.AreaViewLocationFormats.Add("/Areas/{2}/Views/{1}/{0}.cshtml");
options.AreaViewLocationFormats.Add("/Areas/{2}/Views/Shared/{0}.cshtml");
});
services.Configure<MvcRazorRuntimeCompilationOptions>(options =>
{
foreach (PluginInfo ioptionPlugin in pluginsInfoList)
{
options.FileProviders.Add(new EmbeddedFileProvider(
ioptionPlugin.Assembly,
baseNamespace: ioptionPlugin.Name.Replace(".dll", "")));
}
});
Я получаю сообщение об ошибке, что он пытался найти это действие, но не смог найти, а затем список страниц, где он искал конкретное действие. Что указывает на то, что он не смотрел в контроллере других проектов.