日期:2014-05-18  浏览次数:20418 次

membership.createuser返回的类型怎么转换为自己定义(继承)的user类?
我自己定义了一个继承自.net2.0的membership的user类的用户类,在用membership.createUser创建新用户后,不能把新创建的用户实例赋值给我的用户类型的变量,强制类型转换也不行,有什么办法吗??请高手指教

------解决方案--------------------
那你要重写创建用户的方法了吧
------解决方案--------------------
哦,那要继承membership类然后重写其中的方法了。
------解决方案--------------------
MembershipUser只是一个用于验证的用户类,它只存放基本的用户验证时的信息,对于一些扩展信息,你必须自己来处理存放和读取,说白了,就是用于登陆部分的信息处理MS已经帮你做了,至于扩展信息的处理你得自己负责- -,就是这样的
------解决方案--------------------
没有用过这个东东,还是喜欢自己的用户管理

应该需要自己扩展 Membership provider 还是 ProfileProvider 吧
------解决方案--------------------
报什么错误?贴出来看一下,另外,把你自定义的createUser的实现也贴出来
------解决方案--------------------
原来你想通过MemberShip.CreateUser来返回想要的MembershipUser用户对象啊,那当然不行拉。要想实现返回自己需要的MembershipUser用户对象需要的操作极其烦琐,基本如下:
1.自定义一个MembershipUser子类(比如MyUser),添加上你需要增加的字段、属性和方法。基本上它就是一个数据容器而已
2.自定义一个MembershipProvider子类(比如MyMembershipProvider),并重写其需要的所有的方法(MembershipProvider是一个抽象类,所以其所有的方法基本都得实现)。在其中你就会看到需要实现如下的方法
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
//实现该方法的操作并返回一个类型为MyUser的对象
}

3.Web.Config中的配置
在 <system.web> 节中要写入如下配置
<membership defaultProvider= "UserDefineMembershipProvider ">
<providers>
<add name= "随便取个名字,比如UserDefineMembershipProvider " type= "这里必须填写你自定义的MembershipProvider派生类的类名,比如沿用之前的MyMembershipProvider,注意该类必须编译生成dll,否则无法启用 "/>
</providers>
</membership>

然后在运行时调用MemberShip.CreateUser方法时就会调用你自定义的用户提供程序了,因此也就能返回你自定义的MembershipUser子类MyUser对象了。

基本就是这样,当初也是自己摸索出的,差点没累死,哎~~~~~~~~~~
------解决方案--------------------
楼主的myuser继承了user类,所以,myuser里存在user 里所没有的属性值,可能是因为这个原因所以不让父类强制转换为子类吧,你可以尝试在myuser类里增加一个方法
public user ConvertToUser()
{
return new user(...);//把用到的相关属性赋值下
}
------解决方案--------------------
UP
------解决方案--------------------
不要太依赖这个东西!你可以把数据导入到你现在用的数据库里面!查询什么最好连接!不要去改变里面的东西比较好!