【问题标题】:Sitefinity create a page before application startsSitefinity 在应用程序启动之前创建一个页面
【发布时间】:2016-03-10 09:35:20
【问题描述】:

我正在尝试为使用 fluent api 在 Sitefinity cms 系统中开发的控件创建默认页面。

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

所以我尝试传递一些安全信息进行身份验证。下面是代码

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

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

【问题讨论】:

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


    【解决方案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 方法 - 这意味着它已经在管理员权限下运行。

    【讨论】:

    • 应该,但您需要将 .PlaceUnder(SiteInitializer.SitefinityNodeId) 替换为您选择的前端页面的 Id。
    • 文件module.cs 会在哪里?来自 sitefinity 的任何文档?
    • 好吧,如果您使用 Sitefinity Thunder 创建自定义模块,那么它会创建一个名为 YourModuleNameInstaller.cs 和 YourModuleNameModule.cs 的文件(以及更多文件和文件夹)。
    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 2014-10-13
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多