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

Dotnetnuke 从DNN 7.1.2升级到DNN 9.0.1后,DNN页面的模块丢失,dotnetnuke,dotnetnuke-7,dotnetnuke-9,Dotnetnuke,Dotnetnuke 7,Dotnetnuke 9,我们已将DNN 7.1.2专业版升级为DNN 9.0.1。升级顺利进行,没有任何错误。但是,当访问升级后的网站时,页面上没有加载任何模块。同时,我想强调的是,正确的皮肤菜单等正在加载。在调试了很多次之后,我在一个名为DotNetNuke.Profession.dll的dll中找到了这个问题。此dll有一个名为GranularPermissionProvider的类,它根据当前用户权限检查模块是否需要显示在页面上。罪犯代码如下: granurPermissionProvider.cs //DotN

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

granurPermissionProvider.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;
}
//
///返回一个标志,指示当前用户是否可以查看模块
/// 
///页面
///指示用户是否具有权限的标志
公共虚拟布尔视图模块(ModuleInfo模块)
{
布尔坎维;
if(module.InheritViewPermissions)
{
TabInfo objTab=TabController.Instance.GetTab(module.TabID,module.PortalID,false);
canView=TabPermissionController.CanViewPage(objTab);
}
其他的
{
canView=PortalSecurity.IsInRoles(module.ModulePermissions.ToString(ViewModulePermissionKey));
}
返回canView;
}

如果仔细查看,基本代码将检查模块是否继承了GranularPermissionProvider类中完全缺失的页面权限。我怀疑这是由于没有加载模块而导致的问题。我想知道是否有相同的修复程序?

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

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

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

只是一些想法