Umbraco 8 – Error en all.generated.cs cuando añado un Macro dentro de RTE.
Cuando intento agregar cualquier tipo de macro (incluso si solo incluye un <Div>
vacío) en un RTE, arroja el siguiente error:
Newtonsoft.Json.JsonSerializationException: Error al obtener el valor de '***' en 'Umbraco.Web.PublishedModels.***'. ---> System.ArgumentNullException: El valor no puede ser nulo.
Nombre del parámetro: doc
en Umbraco.Web.Macros.PublishedContentHashtableConverter..ctor(IPublishedContent doc) en D:\a\1\s\src\Umbraco.Web\Macros\PublishedContentHashtableConverter.cs:línea 57
en Umbraco.Web.Macros.MacroRenderer.Render(String macroAlias, IPublishedContent content, IDictionary`2 macroParams) en D:\a\1\s\src\Umbraco.Web\Macros\MacroRenderer.cs:línea 200
en Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.<>c__DisplayClass4_1.<RenderRteMacros>b__1(String macroAlias, Dictionary`2 macroAttributes) en D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:línea 57
en Umbraco.Web.Macros.MacroTagParser.ParseMacros(String text, Action`1 textFoundCallback, Action`2 macroFoundCallback) en D:\a\1\s\src\Umbraco.Web\Macros\MacroTagParser.cs:línea 196
en Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.RenderRteMacros(String source, Boolean preview) en D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:línea 63
en Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.Convert(Object source, Boolean preview) en D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:línea 89
en Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, Object inter, Boolean preview) en D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:línea 71
en Umbraco.Core.Models.PublishedContent.PublishedPropertyType.ConvertInterToObject(IPublishedElement owner, PropertyCacheLevel referenceCacheLevel, Object inter, Boolean preview) en D:\a\1\s\src\Umbraco.Core\Models\PublishedContent\PublishedPropertyType.cs:línea 219
en Umbraco.Web.PublishedCache.NuCache.Property.GetValue(String culture, String segment) en D:\a\1\s\src\Umbraco.Web\PublishedCache\NuCache\Property.cs:línea 211
en Umbraco.Web.PublishedPropertyExtension.Value[T](IPublishedProperty property, String culture, String segment, Fallback fallback, T defaultValue) en D:\a\1\s\src\Umbraco.Web\PublishedPropertyExtension.cs:línea 39
en Umbraco.Web.PublishedContentExtensions.Value[T](IPublishedContent content, String alias, String culture, String segment, Fallback fallback, T defaultValue) en D:\a\1\s\src\Umbraco.Web\PublishedContentExtensions.cs:línea 163
en Umbraco.Web.PublishedModels.*** en ***\App_Data\Models\all.generated.cs:línea 748
en ***
en Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target) en /_/Src/Newtonsoft.Json/Serialization/DynamicValueProvider.cs:línea 110
--- Fin del seguimiento de la pila de excepciones internas ---
en Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target) en /_/Src/Newtonsoft.Json/Serialization/DynamicValueProvider.cs:línea 114
en Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue) en /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs:línea 520
en Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) en /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs:línea 469
en Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) en /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs:línea 95
en Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) en /_/Src/Newtonsoft.Json/JsonSerializer.cs:línea 1151
en Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer) en /_/Src/Newtonsoft.Json/JsonConvert.cs:línea 664
en Newtonsoft.Json.JsonConvert.SerializeObject(Object value, Formatting formatting, JsonSerializerSettings settings) en /_/Src/Newtonsoft.Json/JsonConvert.cs:línea 629
Se han censurado algunos nombres y rutas.
Mientras depuraba mi código, muestra el siguiente error al intentar serializar IPublishedContent
en all.generated.cs
:
No uso plantillas Umbraco, el lado del cliente está separado y recupera los datos de Umbraco utilizando solicitudes HTTP a un punto de API personalizado que utiliza UmbracoHelper
.
No estoy utilizando MVC.
¿Alguien ha enfrentado ese problema y sabe cómo manejarlo?
davy.ai
Basándose en el mensaje de error proporcionado, parece que el problema está relacionado con la serialización de IPublishedContent, que es parte del CMS Umbraco. Específicamente, parece que la serialización falla debido a que se está pasando un parámetro nulo al constructor de PublishedContentHashtableConverter.
Una posible solución a este problema podría ser serializar manualmente el objeto IPublishedContent utilizando una biblioteca o método de serialización diferente. Esto requeriría modificar el código responsable de generar la salida JSON para el RTE.
Otra posible solución podría ser investigar la causa raíz del parámetro nulo que se está pasando a PublishedContentHashtableConverter. Esto podría implicar examinar los datos de entrada al RTE y asegurarse de que estén correctamente formateados y estructurados, así como buscar cualquier error o problema en el propio CMS Umbraco que podría estar causando el problema.
En última instancia, el mejor enfoque dependerá de los detalles específicos del proyecto y la naturaleza del problema que se está encontrando. Puede ser útil consultar a otros desarrolladores o foros de la comunidad para recibir consejos y orientación sobre cómo resolver este problema.