我们已将DNN 7.1.2专业版升级到DNN 9.0.1。升级进行顺利,没有任何错误。但是,访问升级后的网站时,没有任何模块正在加载页面。同时我想强调正确的皮肤菜单等被加载。调试了很多后,我可以通过名称DotNetNuke.Profession.dll找到他在dll中的问题。这个dll有一个名为GranularPermissionProvider的类,它根据当前的用户权限检查模块是否需要显示在页面上。罪魁祸首码似乎是以下:从DNN 7.1.2升级到DNN 9.0.1后DNN页面缺少模块
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;
}
如果你仔细观察的基础代码检查模块继承页面权限或没有被完全从GranularPermissionProvider类失踪。我怀疑这是由于哪些模块未被加载而引起的问题。我想知道是否有相同的修补程序?