我正在努力:
((Request.Params["crmid"] != null))
在网页中。但它不断抛出序列化异常:
输入'QC.Security.SL.SiteUser' 大会'QC.Security, 版本= 1.0.0.1,文化=中立, PublicKeyToken = null'未标记为 序列化的。
然而,类型(自定义IIdentity)标记为可序列化如下:
[Serializable()]
public class SiteUser : IIdentity
{
private long _userId;
public long UserId { get { return _userId; } set { _userId = value; } }
private string _name;
public string Name { get { return _name; } }
private bool _isAuthenticated;
public bool IsAuthenticated { get { return _isAuthenticated; } }
private string _authenticationType;
public string AuthenticationType { get { return _authenticationType; } }
我不知道如何调试这个,因为我无法进入序列化器代码以找出它为什么会摔倒。调用堆栈在到达[外部代码]之前只有一帧深度。并且错误消息是无用的,因为类型明确标记为可序列化。试验和错误调整也产生了一个类型未解决的成员例外。
工作正常。但现在“突然间”它并不通常意味着Visual Studio中的一些愚蠢的错误,但重启并没有帮助“这个”时间。所以现在我不知道这是一个愚蠢的VS错误还是一个完全不相关的错误,我得到了序列化异常或者我做错了什么。
事实是,我不再相信VS了,因为过去几个月我一直在进行疯狂的追逐,并通过重新启动VS 2008或其他一些荒谬的解决办法来“修复”。
答案 0 :(得分:7)
O.k所以我已经解决了这个问题。这是另一个VS /卡西尼问题。根据{{3}}网址和this网址,解决方法是使SiteUser继承MarshalByRefObject。
这是必要的,因为:
问题是卡西尼会破裂 随意进入单独的AppDomain, 这在IIS中不会发生(甚至 虽然他们说它可以。)因为 这,当Atlas试图转换时 到JSON上的东西 服务器,它做了一些事情和交换机 并且.User自定义主体没有 反序列化,因为程序集是 不在GAC中且未注册 另一个AppDomain。
“开发人员开发人员咳嗽”