Как мне направить Piranha CMS по определенному пути в существующем ASP.Net Основное приложение MVC?

#c# #asp.net-mvc #piranha-cms

#c# #asp.net-mvc #piranha-cms

Вопрос:

Я пытался добавить Piranha CMS (версия 10) на свой существующий веб-сайт, который является ASP.Net Основное приложение MVC на .Net 6. В настоящее время он использует области для хранения контента по разным темам (музыка, игры и т. Д.), И я хотел бы иметь область блога, в которой работает сайт Piranha (и менеджер). Однако я просто не могу понять, как настроить Startup.cs, чтобы это произошло.

Ниже приведен Configure метод моего Startup.cs файла (я еще не перешел на единый Program.cs стиль). Я создал область «Блог» и скопировал CMSController туда класс вместе с представлениями шаблонов и моделями, но я не уверен, что это правильно.

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory, IApi api)
    {
        ...

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "GitHub",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
            routes.MapRoute(
                name: "Games",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
            routes.MapRoute(
                name: "Blog",
                template: "{area:exists}/{controller=Cms}/{action=Index}/");
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        // Piranha stuff
        App.Init(api);
        new ContentTypeBuilder(api)
            .AddAssembly(typeof(Startup).Assembly)
            .Build()
            .DeleteOrphans();

        // Configure Tiny MCE
        EditorConfig.FromFile("editorconfig.json");
        
        app.UsePiranha(options =>
        {
            options.UseManager();
            options.UseTinyMCE();
            options.UseIdentity();
        });
    } 
 

Мой ConfigureServices метод также имеет некоторые дополнительные настройки:

     public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages()
            .AddRazorRuntimeCompilation()
            .AddPiranhaManagerOptions(); ;

        ...

        services.AddAuthorization(options =>
        {
            options.AddPolicy("Administrators", new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .RequireClaim("role", "Administrators")
                .Build());
            options.AddPolicy("PiranhaRoles", new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .RequireClaim("piranharoles", "PiranhaRoles")
                .Build());
            ...
        });

        services.AddPiranha(options =>
        {
            options.UseFileStorage(naming: Piranha.Local.FileStorageNaming.UniqueFolderNames);
            options.UseImageSharp();
            options.UseCms();
            options.UseManager();
            options.UseTinyMCE();
            options.UseMemoryCache();
            options.UseEF<SQLServerDb>(db =>
                db.UseSqlServer(connectionString));
        });
    }
 

Когда я запускаю приложение и захожу в / Blog, оно не возвращает никакого представления (чего я ожидаю, учитывая, что реальной индексной страницы нет. / Manager тоже не отображается. Итак, мой вопрос: как мне настроить маршрутизацию в моем Startup классе для размещения приложения Piranha CMS в mywebsite.comBlog (и менеджера в mywebsite.comBlogManager )?

Бонусный вопрос: почему я должен добавлять services.AddAuthorization роли Пираньи в свой ConfigureServices метод? Должен быть способ добавления необходимых ролей без необходимости указывать их все по отдельности таким образом.