2010-04-10 49 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

相關問題