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