0

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

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

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

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

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

4

1 回答 1

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

于 2016-03-11T02:21:07.523 回答