想知道是否有人確切地知道ASP.net HttpRuntime.Cache使用的默認序列化是什麼?它是二進制,XML還是別的?什麼是ASP.net使用的默認序列化HttpRuntime.Cache
我問,因爲我有一種情況,我用相同的自定義類型的多個對象填充泛型列表。自定義類型是POCO,沒有什麼特別的。它的所有屬性都是公開的{get;組; },它是公共的,它沒有繼承,它沒有接口。事實上,它比我們緩存沒有問題的許多其他對象複雜得多。我曾嘗試將[Serializable]屬性添加到自定義類中,但它沒有任何作用。
我使用唯一鍵將列表添加到緩存中。該列表在插入緩存之前已驗證爲已填充,列表中的對象也已驗證爲已填充。但是當列表退出緩存時它是一個空列表(NOT NULL),它只是沒有任何項目。這意味着該列表正在被添加到緩存中,並且是可檢索的,但由於某種原因,緩存在序列化列表中的對象時遇到了問題。
我剛剛發現這個奇怪的怪異,因爲我有另一個更復雜的自定義對象列表(包括繼承,接口,也包含屬性是其他複雜對象的通用列表)和這些列表的緩存工作沒有問題。
在使用緩存數據的ASP.net用戶控件之外的C#類中管理工作和非工作列表。這兩個緩存處理類都調用完全相同的緩存管理器類singleton實例,該實例封裝了HttpRuntime.Cache以提供用於將對象拖入緩存中的類型化方法。
任何人都有什麼想法可能導致這種情況發生。我唯一能做的是,Document對象的'Blurb'屬性可以包含HTML,但是如果ASP.net使用二進制序列化緩存,我不會看到這會做什麼。
這裏是類
public class Document
{
public string ContentTypeId { get; set; }
public string ContentId { get; set; }
public bool IsCustom { get; set; }
public Language DocLanguage { get; set; }
public string RegularTitle { get; set; }
public string InvertedTitle { get; set; }
public string Blurb { get; set; }
}
這裏是語言屬性
public class Language
{
public string Name { get; set; }
public string Code { get; set; }
}
+1好問題! – 2010-06-30 17:03:00