#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
метод? Должен быть способ добавления необходимых ролей без необходимости указывать их все по отдельности таким образом.