System.xaml Badimageformatexception при Deserialization remoteeExecutionContext в .net 8 Service с Data8.powerPlatform.DC#

Место общения программистов C#
Ответить
Anonymous
 System.xaml Badimageformatexception при Deserialization remoteeExecutionContext в .net 8 Service с Data8.powerPlatform.D

Сообщение Anonymous »

У меня есть сервис .net 8, которая получает сериализованные объекты RemoteExecutionContext из плагина Dynamics 365 (с помощью .NET Framework 4.6.2). Код работал идеально месяцами, но внезапно начал сбой с Badimageformatexception , связанным с System.xaml после повторного открытия проекта. Dynamics 365 Плагин Отправка remoteExecutionContext Использование microsoft.crmsdk.workflow v9.0.2.52
[*] Ошибка возникает во время десериализации, а не из -за контента XML

. />system.Reflection.TargetInVocationException: Исключение было выбрано целью вызова. /> Внутреннее исключение 1: ArmeryException: Badimageformatexception было брошено при анализе подписи. Вероятно, это связано с отсутствием общего контекста. Справочные сборки не могут быть загружены для выполнения. < /P>
Внутреннее исключение 3: badimageformatexception: невозможно загрузить эталонную сборку для выполнения. < /P>
< /blockquote>
Current Code: < /p>
(плагин-сторона): < /p>
var dataContractSerializer = new DataContractSerializer(typeof(Microsoft.Xrm.Sdk.RemoteExecutionContext),
[
typeof(Microsoft.Xrm.Sdk.Entity),
typeof(Microsoft.Xrm.Sdk.EntityReference),
typeof(Microsoft.Xrm.Sdk.OptionSetValue),
typeof(Microsoft.Xrm.Sdk.Money),
typeof(Microsoft.Xrm.Sdk.OptionSetValueCollection)
]);

using var memoryStream = new MemoryStream();
dataContractSerializer.WriteObject(memoryStream, context);
var buffer = memoryStream.ToArray();

using var byteArrayContent = new ByteArrayContent(buffer);
byteArrayContent.Headers.Add("Content-Type", "text/xml");

using var httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(180.0) };

var httpResponseMessage = httpClient.PostAsync(restUrl, byteArrayContent).Result;
< /code>
сторона службы: < /p>

Код: Выделить всё

private RemoteExecutionContext? DeserializeRemoteContext(XElement request)
{
return (RemoteExecutionContext?)new DataContractSerializer(typeof(Microsoft.Xrm.Sdk.RemoteExecutionContext), SerializerTypes)
.ReadObject(request.CreateReader());
}

public static readonly IEnumerable SerializerTypes = new List
{
typeof(Microsoft.Xrm.Sdk.Entity),
typeof(Microsoft.Xrm.Sdk.EntityReference),
typeof(Microsoft.Xrm.Sdk.OptionSetValue),
typeof(Microsoft.Xrm.Sdk.Money),
typeof(Microsoft.Xrm.Sdk.OptionSetValueCollection)
};
< /code>
Что я пробовал: < /p>
[list]
[*] DataContractSerializerSettings
с явным знаменитымтип :

Код: Выделить всё

var settings = new DataContractSerializerSettings
{
KnownTypes = SerializerTypes,
PreserveObjectReferences = true,
IgnoreExtensionDataObject = true
};
var serializer = new DataContractSerializer(typeof(RemoteExecutionContext), settings);
[*] Ассамблея разрешить крюк для блокировки System.xaml :

Код: Выделить всё

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
if (args.Name.StartsWith("System.Xaml")) return null;
return null;
};
< /code>
< /li>
 XmlSerializer
вместо dataContractSerializer :

Код: Выделить всё

var xmlSerializer = new XmlSerializer(typeof(RemoteExecutionContext));
return (RemoteExecutionContext?)xmlSerializer.Deserialize(reader);
< /code>
< /li>
 Checked transitive dependencies - no obvious System.Xaml
или System.Activities ссылки

[/list]
Наблюдения:
  • xml Plieload является чистой - содержит только стандартные типы CRM SDK (Entity, EntityReer, MoneySetElue)
    ; same code, same environment, broke after months of working
  • Error occurs during metadata scanning - DataContractSerializer tries to load System.Xaml when processing KnownType attributes, not when parsing XML content
Questions

Почему это внезапно перестанет работать после месяцев без изменений кода? Сервисы? Проблема совместимости CRM SDK будет оценена.

Подробнее здесь: https://stackoverflow.com/questions/797 ... context-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»