首页 新闻 赞助 找找看

多年前的博客园第一个开源项目Nbear3.6 碰到些问题请教!!

0
悬赏园豆:20 [已解决问题] 解决于 2012-03-12 15:07

用Nbear已经有3年多了.这些碰到个问题. 

web应用站点的Session 改用StateServer方式后.要对存在session 对象序列化.

Nbear的实体对象序列化时有问题,之前使用过[SerializationIgnore]属性.好像只是针对xml序列化时忽略. 

也试过网上说的 加属性[field:NonSerialized()].还是有出错

---------------------------------实体定义------------------------------------


/// <summary>
/// 系统用户,登录用户
/// </summary>
public interface User : Entity
{
[PrimaryKey]
[FriendKey(typeof(Person))]
Guid GID { get;set;}
EnumStatus Status { get;set;}
int iid { get;set; }
string user_id { get; set; }
string password { get; set; }
int count { get; set; }
bool online { get; set; }
DateTime? lastOnlineDT { get;set;}
DateTime? lastLoginDT { get; set; }

string email { get; set; }
string ip_address { get; set; }
string mac_address { get; set; }
string role { get; set; }

[FkReverseQuery(LazyLoad = true)]
[SerializationIgnore]
USBKEY usbKey { get;set;}

[PkReverseQuery(LazyLoad = true)]
[SerializationIgnore]
Person person { get;set;}

[FkQuery("user", LazyLoad = true)]
[SerializationIgnore]
UserMessage[] userMessages { get; set; }

[FkQuery("user", LazyLoad = true, Contained = false)]
[SerializationIgnore]
UserNotice[] userNotices { get; set; }

[Comment("区域权限")]
string localCode { get; set; }//区域权限,201400,201600等


[Comment("登录失败次数,大于5")]
int loginfailcount { get; set; }

[Comment("工资查询密码")]
string passwordPay { get; set; }

[Comment("在线KEY用于多点登录")]
string OnlineKey { get; set; }

}


=============出错信息=============

无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。


[SerializationException: 程序集“NBear.Data, Version=3.6.6.0, Culture=neutral, PublicKeyToken=f6134b09b3197389”中的类型“NBear.Data.Gateway”未标记为可序列化。]

[HttpException (0x80004005): 无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。]



willieQ的主页 willieQ | 初学一级 | 园豆:62
提问于:2012-03-06 00:30
< >
分享
最佳答案
1

加上[Serializable]属性试试:

[Serializable]
public interface User : Entity
{
}


 

收获园豆:20
dudu | 高人七级 |园豆:31075 | 2012-03-06 21:39

加上后,编译都没通过

willieQ | 园豆:62 (初学一级) | 2012-03-12 15:05

错误 1 特性“Serializable”在该声明类型中无效。它只在“class, struct, enum, delegate”声明中有效。 *\EntityDesigns\EntityDesigns.cs 38 6 EntityDesigns

willieQ | 园豆:62 (初学一级) | 2012-03-12 15:06
其他回答(1)
0

实在不行.session 直接存guid ,使用cache提高点性能!

willieQ | 园豆:62 (初学一级) | 2012-03-12 15:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册