Skip to content

Fix the "Type 'Wcf.AifFault' is not marked as serializable" error in Dynamics AX 2009

License

Notifications You must be signed in to change notification settings

mazzy-ax/AifFaultFix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AifFaultFix

AifFaultFix – это код, который исправляет в Microsoft Dynamics AX 2009 ошибку Type 'Wcf.AifFault' in assembly 'Wcf, version=0.0.0.0...' is not marked as serializable..

AifFault not marked as serializable

Как работает fix

Класс AifServiceReferenceManager в Аксапте генерирует исходные тексты клиентской части WCF и компилирует dll из этих исходных текстов. К сожалению, разработчики Microsoft не проставили несколько атрибутов в "системных" классах, которые обслуживают исключения в WCF.

Проект AifFaultFix добавляет метод на X++ в класс AifServiceReferenceManager. Добавленный код вносит исправления в исходный текст WcfSoapClient.cs перед тем, как генератор начнет компилировать dll.

После добавления проекта в вашу ax2009, нужно перегенерировать Web Reference (удалить-создать заново или правой кнопкой мыши и пункт Восстановить). После перегенерации вы будете видеть в вашей ax2009 текст исключения, которое было брошено на сервере.

Custom error from WCF service

Исправления в WcfSoapClient.cs

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="AifFault", Namespace="http://schemas.microsoft.com/dynamics/2008/01/documents/Fault")]
[System.SerializableAttribute()]  // <-------- AifFaultFix
public partial class AifFault : object, System.Runtime.Serialization.IExtensibleDataObject
{
    [System.NonSerializedAttribute()]  // <-------- AifFaultFix
    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
...
}

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="InfologMessage", Namespace="http://schemas.datacontract.org/2004/07/Microsoft.Dynamics.AX.Framework.Services")]
[System.SerializableAttribute()]  // <-------- AifFaultFix
public partial class InfologMessage : object, System.Runtime.Serialization.IExtensibleDataObject
{
...
}

ChangeLog

Помощь проекту

Буду признателен за ваши замечания, предложения и советы по проекту как в разделе Issues, так и в виде письма на адрес mazzy@mazzy.ru

Мазуркин Сергей (mazzy)

About

Fix the "Type 'Wcf.AifFault' is not marked as serializable" error in Dynamics AX 2009

Resources

License

Stars

Watchers

Forks

Packages

No packages published