Мы обновили профессиональную версию DNN 7.1.2 до DNN 9.0.1. Обновление прошло гладко без каких-либо ошибок. Однако при доступе к обновленному веб-сайту ни один из модулей не загружался на страницу. В то же время я хотел бы подчеркнуть, что загружено правильное меню скинов и т. Д. После многократной отладки я смог найти его в DLL по имени DotNetNuke.Profession.dll. В этой DLL есть класс по имени GranularPermissionProvider, который проверяет, должны ли модули отображаться на странице или нет на основе текущего разрешения пользователя. Код виновника, кажется ниже:Модуль отсутствует для страниц DNN после обновления с DNN 7.1.2 до DNN 9.0.1
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. Я подозреваю, что это проблема, из-за которой модули не загружаются. Мне было интересно, есть ли исправление для того же самого?