Sitefinity在应用程序启动之前创建一个页面

时间:2016-03-10 09:35:21

标签: c# asp.net api content-management-system sitefinity-8

我正在尝试使用流畅的api为Sitefinity cms系统中的控件创建一个控件的默认页面。

页面创建位于该特定控件的安装程序部分。 我在installer.cs中添加了代码,以便在安装后只创建一次页面。但系统不允许创建页面。由于之前的认证部分(我的猜测)。因为页面需要由某个用户名拥有。

所以我试图通过一些安全信息进行身份验证。以下是代码

UserLoggingReason result = SecurityManager.AuthenticateUser("Default", "username","password", true);

但上面的行总是抛出空引用异常,我不知道需要做什么。

1 个答案:

答案 0 :(得分: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方法 - 这意味着它已在管理员权限下运行。