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 - это означает, что он уже запущен с правами администратора.

Другие вопросы по тегам