2017-02-09 3 views
0

Мы обновили профессиональную версию 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. Я подозреваю, что это проблема, из-за которой модули не загружаются. Мне было интересно, есть ли исправление для того же самого?

ответ

0

Вы обновили с DNN Professional (или Evoq) до публикации сообщества DNN? Если это так, могут возникнуть другие проблемы, с которыми вам приходится иметь дело. Конечно, права могут быть одним из них.

Вы можете попробовать посетить функцию «Страницы» администратора. Это должно показать вам список всех ваших страниц. Вы можете посетить их и иметь возможность видеть список установленных модулей, и вы должны иметь возможность редактировать права модуля там.

Вы также можете установить провайдера разрешений Oliver Hine (oliverhine.com), который предоставляет ту же функциональность DNN, что и в Evoq.

Только некоторые идеи ...

Смежные вопросы