DNN 7.1.2 전문판을 DNN 9.0.1로 업그레이드했습니다. 업그레이드는 아무런 오류없이 순조롭게 진행되었습니다. 그러나 업그레이드 된 웹 사이트에 액세스 할 때 페이지에로드 된 모듈이 없습니다. 동시에 정확한 스킨 메뉴 등이로드되고 있음을 강조하고 싶습니다. 디버깅을 많이 한 후 DotNetNuke.Profession.dll이라는 이름으로 dll에서 문제를 찾을 수있었습니다. 이 dll에는 GranularPermissionProvider라는 이름의 클래스가 있습니다. GranularPermissionProvider는 현재 사용자 권한을 기반으로 페이지에 모듈을 표시해야하는지 여부를 확인합니다. 베이스의 코드 반면 DotNetNuke.ProfessionalDNN 7.1.2에서 DNN 9.0.1로 업그레이드 한 후 DNN 페이지에 모듈이 누락 됨
에서// 코드
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
GranularPermissionProvider.cs : 범인 코드는 아래 것 같다 . 완전히 GranularPermissionProvider 클래스에서 누락되는 모듈이 페이지 권한을 상속 또는하지 않을 경우
/// <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;
}
당신은 밀접하게 기본 코드 검사를 보면. 모듈로드가되지 않아서 이것이 문제라고 생각됩니다. 나는 똑같은 문제가 있는지 궁금 해서요?