Код: Выделить всё
Код: Выделить всё
[XmlRoot]
public class Property
{
// Other properties omitted.
[XmlElement("PropertyMap")]
public PropertyMap Map { get; set; }
}
public class PropertyMap
{
public XElement? KML { get; set;}
}
Код: Выделить всё
XmlSerializer serializer = new XmlSerializer(typeof(Property));
Property? property = (Property?)serializer.Deserialize(fileStream);
Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Необработанный компонент рендеринга исключений: XmlTypeReflectionError, Property
System.InvalidOperationException: XmlTypeReflectionError, Property
---> System.InvalidOperationException: XmlPropertyReflectionError, Map
---> System.InvalidOperationException: XmlTypeReflectionError, PropertyMap
---> System.InvalidOperationException: XmlSerializerUnsupportedMember, PropertyMap.KML, System.Xml.Linq.XElement
---> System.InvalidOperationException: XmlConstructorInaccessible, System.Xml.Linq.XElement
Exception_EndOfInnerExceptionStack
Если я переключу приложение на использование режима рендеринга сервера, десериализация работает нормально. Когда я запускаю его из Visual Studio, используя WebAssembly или Server, он работает. При публикации с использованием WebAssembly возникают ошибки.
Я пробовал публиковать с использованием как -c Release, так и -c Debug, но это не имеет значения, та же ошибка. Я предполагаю, что это связано с тем, что у XElement нет общедоступного конструктора без параметров, но в таком случае почему десериализация работает в других сценариях?
Вкратце:
Работает в VS2026 как с Blazor Server, так и с WebAssembly.
Не работает при публикации (ни в IIS, ни в прямом запуске Kestrel) в Blazor WebAssembly. (Выпуск или отладка)
Полный пример можно найти здесь: https://github.com/valuator18/BlazorXml
Подробнее здесь: https://stackoverflow.com/questions/798 ... ebassembly
Мобильная версия