2010-04-10 50 views
4

我想如何调试“类型未标记为可序列”异常。但是,不断抛出一个异常系列化:调试:当类型为标记为可序列

类型 'QC.Security.SL.SiteUser' 在 集 'QC.Security, 版本= 1.0.0.1,文化=中立, 公钥=空' 是不是标记为 可序列化。

的类型,一个自定义的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; } } 

我不知道如何调试这是我不能踏入串行代码,找出它的原因翻倒。调用堆栈在触及[External Code]之前只有一帧深度。并且错误信息接近无用,因为该类型明确标记为可序列化。尝试和错误调整也产生了一个类型不解决成员异常。

它工作正常。但是现在“突然间”并不是这通常意味着Visual Studio中的一些愚蠢的错误,但重新启动并不能帮助“这个”时间。所以现在我不知道这是一个愚蠢的VS错误还是一个完全不相关的错误,我得到一个序列化异常或我做错了什么。

事实是,我只是不再相信VS了,因为在过去的几个月中,我通过重新启动VS 2008或其他一些小问题的解决方法已经“修复”了一些wild cha追逐。

回答

7

因此我解决了这个问题。这是/另一个VS /卡西尼问题。根据this url和this url解决方法是使SiteUser从MarshalByRefObject继承。

这是因为neccessary:

的问题是,卡西尼将打破 成单独的AppDomain随意, (虽然他们说,它甚至可以 ),这不会发生的IIS。由于 这一点,当阿特拉斯试图 转换成JSON的东西的 服务器上,它做一些事情,并切换 和定制。用户主要不 反序列化,因为该组件是 不是在GAC和未注册 另一个AppDomain。

“开发商开发的开发人员咳嗽

+5

好,你解决了这个问题,但谁在卡西尼反正发展?为什么不直接在要托管您的网站(IIS)的平台上开发?从长远来看,这将为您节省很多麻烦。 – 2010-04-10 01:20:06

+0

我有同样的问题 - 什么是秃子。我会研究marshalbyrefobject修复。谢谢。 – UpTheCreek 2010-05-13 18:41:39

+0

另外,看看这个:http://stackoverflow.com/questions/1884030/implementing-a-custom-identity-and-iprincipal-in-mvc – UpTheCreek 2010-05-13 18:46:37

相关问题