Solo me pregunto si alguien sabe definitivamente cuál es la serialización predeterminada utilizada por ASP.net HttpRuntime.Cache? ¿Es Binario, XML, algo más?¿Cuál es la serialización predeterminada utilizada por ASP.net HttpRuntime.Cache
Pregunto porque tengo una situación en la que estoy rellenando una Lista genérica con múltiples objetos del mismo tipo personalizado. El tipo personalizado es un POCO, no hay nada especial al respecto. Todas sus propiedades son públicas con {get; conjunto; }, es público, no tiene herencia, no tiene interfaces. De hecho, es mucho menos complicado que muchos otros objetos que almacenamos en caché que funcionan sin problemas. He intentado agregar el atributo [Serializable] a la clase personalizada y no tiene ningún efecto.
Agrego la lista a la memoria caché con una clave única. La lista se ha verificado como completada antes de que se inserte en la memoria caché, también se ha verificado que los objetos de la lista se han rellenado. Pero cuando la lista se retira de la memoria caché, es una lista vacía (NO NULA), simplemente no tiene elementos. Esto significa que la lista se está agregando a la memoria caché y es recuperable, pero por alguna razón la memoria caché tiene problemas para serializar los objetos en la lista.
Acabo de encontrar este raro extraño ya que tengo otra lista de objetos personalizados que son mucho más complicados (que consisten en Herencia, Interfaces y también contienen Propiedades que son listas genéricas de otros objetos complejos) y el almacenamiento en caché de esas listas sin problema
Tanto la lista de trabajo como la de no trabajo se administran en clases de C# fuera de los controles de usuario de ASP.net que consumen los datos en caché. Ambas clases de manejo de caché llaman a la misma instancia singleton de la clase Cache Manager que envuelve HttpRuntime.Cache para proporcionar métodos tipeados para extraer y empujar objetos en el caché.
Cualquiera tiene alguna idea de lo que podría causar que esto suceda. Lo único que puedo decir es que la propiedad 'Blurb' del objeto Document puede contener HTML, pero si ASP.net usa serialización binaria para el caché, no veo cómo esto podría hacer nada.
Aquí es la clase
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; }
}
Aquí está la subclase utilizado en el lenguaje Propiedad
public class Language
{
public string Name { get; set; }
public string Code { get; set; }
}
+1 ¡Buena pregunta! –