0

ASP.NET 2.0 を使用して、Community Server 2008 SP2 (これは 2008 ~ 2011 年のブログ ソフトウェアです) でブログを運営しています。コメントは現在機能していません。機能していない理由を調べています。

例外ログを調べると、次のように表示されます。

Exception Type: RoleNotFound

User Agent:
Path: as HTTP
Referrer:
Message: Error while trying to find a role for the user 'chuacw'. Possible cause is a invalid client cookie or a user rename.
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.Security.Roles.GetRolesForUser(String username)
at CommunityServer.ASPNet20MemberRole.CSRoles.GetRolesForUser(String userName)
at CommunityServer.Components.Roles.UserRoleIDsCollection.LoadFromDatabase(String username)

これを調査するために、次の内容で testrole.aspx を作成しました。

<%@ Page %>
<%@ Register TagPrefix="CSM" Namespace="CommunityServer.ASPNet20MemberRole" 

Assembly= "CommunityServer.ASPNet20MemberRole" %>
<%@ Register TagPrefix="Custom2" Namespace="CommunityServer.Components" 

Assembly= "CommunityServer.Components" %>

<% 
      String username = "chuacw";
      CommunityServer.ASPNet20MemberRole.CSRoles role = new 

CommunityServer.ASPNet20MemberRole.CSRoles();

      CommunityServer.Components.Role[] lRoles = role.GetRoles();
      foreach (CommunityServer.Components.Role lRole in lRoles) {
        Response.Write("Role: " + lRole.Name + "<br />");
      }
      Response.Write("<br/>");

      Response.Write("Username is: " + username + "<br />");

      String[] roles = role.GetRolesForUser(username);
      foreach (string lSrole in roles) {
         Response.Write(lSrole + "<br/>");  
      }
%>

そして、自分のサイト、つまり http://mysite/testrole.aspx から、自分のサイトにログインせずにブラウザでこのページを直接開きました。

このコードは機能し、ロールのリストとユーザー名を確認できました。

私のコードがCommunityServer.ASPNet20MemberRole.CSRoles.GetRolesForUserを呼び出したことを考えると、これは、この質問の冒頭で例外を発生させたコードによって呼び出されるのと同じメソッドであり、この例外がスローされる理由を理解できません。

私はこのデータベースの管理者で、ユーザー "chuacw" です。このユーザーを使用して、このブログ ソフトウェアにログインできます。

これをさらに調査する方法を知っている人はいますか? これのソースはありませんが、ILSpy と Reflector を使用して、新しいコードを記述してこれをテストできます。

私の希望は、このエラーにつながる根本的な条件を見つけて、原因を修正することです.

ありがとうございました。

4

0 に答える 0