2017-02-09 5 views
0

DNN 7.1.2プロフェッショナルエディションをDNN 9.0.1にアップグレードしました。アップグレードは間違いなくスムーズに進んだ。しかし、アップグレードされたWebサイトにアクセスするときには、ページにロードされていたモジュールはありません。同時に、正しいスキンメニューなどがロードされていることを強調したいと思います。多くのデバッグの後、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クラスから欠落しているページのアクセス許可かを継承する場合は、密接に基本コードのチェックを見てみると。私はこれがモジュールがロードされていないための問題であると思われます。私は同じもののための修正があるかどうか疑問に思っていた?

答えて

0

DNN Professional(またはEvoq)からDNNのコミュニティ版にアップグレードしましたか?もしそうなら、あなたが対処しなければならない他の問題があるかもしれません。確かに、パーミッションはそれらの一つかもしれません。

「ページ」管理機能を試してみることもできます。それはあなたのすべてのページのリストを表示する必要があります。あなたはそれらを訪問することができ、インストールされているモジュールのリストを見ることができるはずです。そこでモジュールのアクセス許可を編集できるはずです。

EvoqのDNNと同じ機能を提供するOliver Hine(oliverhine.com)の許可プロバイダをインストールすることもできます。

ちょっとしたアイデア...