.NET2.0下CommunityServer21新注册用户成功,注销重新登录失败的问题

跟踪来跟踪去最终发现是CommunityServer.ASPNet20MemberRole项目的问题,只要把CommunityServer.ASPNet20MemberRole项目替换为引用官方的CommunityServer.ASPNet20MemberRole.dll组件就没有问题。最明显的地方就是打开数据库的aspnet_Membership表的password字段,
正常的密码应该是“SoQqOP2vGAXvtxDWik63bvAsaUY=”
而使用错误的项目注册新用户产生的密码却是“rTn3JFHyGJtS7Qqy8ukbJ60vDd9llRh82zJt76O2dSc=”密码的长度都已经不一样了。应该是处理逻辑有问题。用反射器打开官方的组件和SDK项目中发现CSMembershipProvider类的不同的地方
//官方2.1sp2版本
public class CSMembershipProvider : SqlMembershipProvider, IApplicationName
{
    
// Methods
    public CSMembershipProvider();

    
// Properties
    public override string ApplicationName { getset; }
}

 
Expand Methods
 

public class CSMembershipProvider : CommunityServer.SqlMembershipProvider.SqlMembershipProvider, IApplicationName
        {
        
public override string ApplicationName
        {
            
get
            {
                
string text1 = CSContext.Current.SiteSettings.ApplicationName;
                
if (text1 == null)
                {
                    text1 
= base.ApplicationName;
                }
                
return text1;
            }
            
set
            {
                
base.ApplicationName = value;
            }
        }

    }

很明显2.1sp2版本的CSMembershipProvider已经放弃从CS自定义的类CommunityServer.SqlMembershipProvider.SqlMembershipProvider转而使用.NET2.0版本的SqlMembershipProvider。替换掉后重新编译。新用户注册注销退出再登录后问题解决。看看密码,也回复正常。

posted on 2007-03-14 17:11  Neo0820  阅读(527)  评论(0编辑  收藏  举报

导航