从DNN 7.1.2升级到DNN 9.0.1后,DNN页面的模块丢失

时间:2017-02-09 06:16:47

标签: dotnetnuke dotnetnuke-7 dotnetnuke-9

我们已将DNN 7.1.2专业版升级到DNN 9.0.1。升级顺利进行,没有任何错误。但是,当访问升级的网站时,页面上没有加载任何模块。同时我想强调正在加载正确的皮肤菜单等。调试了很多后,我能够通过名称DotNetNuke.Profession.dll找到他在dll中的问题。这个dll有一个名为GranularPermissionProvider的类,它根据当前用户权限检查是否需要在页面上显示模块。罪魁祸首代码似乎如下:

GranularPermissionProvider.cs

// DotNetNuke.Professional中的代码

public override bool CanViewModule(ModuleInfo module)
{
  if (!this.Application.HasActiveLicenseOrIsTrial)
    return base.CanViewModule(module);
  if (!PortalSecurity.IsInRoles(module.ModulePermissions.ToString("VIEW")))
    return PortalSecurity.IsInRoles(module.ModulePermissions.ToString("EDIT"));
  return true;
}

基本 PermissionProvider.cs 类中的代码如下所示。

/// <summary>
/// Returns a flag indicating whether the current user can view a module
/// </summary>
/// <param name="module">The page</param>
/// <returns>A flag indicating whether the user has permission</returns>

public virtual bool CanViewModule(ModuleInfo module)
{
    bool canView;
    if (module.InheritViewPermissions)
    {
        TabInfo objTab = TabController.Instance.GetTab(module.TabID, module.PortalID, false);
        canView = TabPermissionController.CanViewPage(objTab);
    }
    else
    {
       canView = PortalSecurity.IsInRoles(module.ModulePermissions.ToString(ViewModulePermissionKey));
    }
    return canView;
}

如果仔细观察,基本代码会检查模块是否继承了GraularPermissionProvider类中完全缺失的页面权限。我怀疑这是由于没有加载模块的问题。我想知道是否有修复方法?

1 个答案:

答案 0 :(得分:0)

您是否已从DNN Professional(或Evoq)升级到DNN的社区版?如果是这样,可能还有其他问题需要处理。当然权限可能是其中之一。

您可以尝试访问&#34;页面&#34;管理功能。这应该会显示所有页面的列表。您可以访问它们,并且应该能够看到安装的模块列表,并且您应该能够在那里编辑模块权限。

您也可以安装Oliver Hine(oliverhine.com)权限提供程序,该权利提供程序为DNN提供与Evoq相同的功能。

只是一些想法......