[*] Ошибка возникает во время десериализации, а не из -за контента 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);
Код: Выделить всё
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
if (args.Name.StartsWith("System.Xaml")) return null;
return null;
};
< /code>
< /li>
XmlSerializerКод: Выделить всё
var xmlSerializer = new XmlSerializer(typeof(RemoteExecutionContext));
return (RemoteExecutionContext?)xmlSerializer.Deserialize(reader);
< /code>
< /li>
Checked transitive dependencies - no obvious System.Xaml[/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
Почему это внезапно перестанет работать после месяцев без изменений кода? Сервисы? Проблема совместимости CRM SDK будет оценена.
Подробнее здесь: https://stackoverflow.com/questions/797 ... context-in
Мобильная версия