Sitefinity создать страницу до запуска приложения
Я пытаюсь создать страницу по умолчанию для элемента управления, который разработан в системе Sitefinity cms, используя свободный API.
Создание страницы находится в установочной части этого конкретного элемента управления. Я добавил код в installer.cs
так что создание страницы произойдет только один раз после установки. Но система не позволяет создать страницу. Из-за аутентификации часть до этого (мое предположение). поскольку страница должна принадлежать какому-то имени пользователя.
Поэтому я попытался передать некоторую информацию о безопасности для аутентификации. Ниже приведен код
UserLoggingReason result = SecurityManager.AuthenticateUser("Default", "username","password", true);
Но приведенная выше строка всегда выдает исключение нулевой ссылки, я не знаю, что нужно сделать в этом.
1 ответ
Код должен быть не в файле installer.cs, а в файле module.cs. Вы увидите, что в методе Install есть вызов:
this.InstallBackendPages(initializer);
и там вы можете создать свою страницу следующим образом:
Guid groupPageId = Guid.NewGuid();
Guid pageId = Guid.NewGuid();
initializer.Installer
.CreateModuleGroupPage(groupPageId, "EmptyCustomModule1 group page")
.PlaceUnder(SiteInitializer.SitefinityNodeId)
.SetOrdinal(100)
.LocalizeUsing<AvalonNotificationsResources>()
.SetTitle("Avalon")
.SetUrlName("avalon")
.ShowInNavigation()
.AddChildPage(pageId, "Test Page")
.SetOrdinal(1)
.LocalizeUsing<AvalonNotificationsResources>()
.SetTitle("Test Page")
.SetUrlName("test-page")
.AddUserControl("~/UserControls/TestWidget.ascx", "Content")
.AddControl(new System.Web.UI.WebControls.Literal()
{
Text = "<h1 class=\"sfBreadCrumb\">Test Widget</h1>",
Mode = System.Web.UI.WebControls.LiteralMode.PassThrough
})
.ShowInNavigation()
.Done()
.Done();
Это определенно работает для меня без предоставления каких-либо учетных данных пользователя, потому что метод Install вызывается только тогда, когда администратор активирует модуль и нажимает кнопку Install - это означает, что он уже запущен с правами администратора.