"Обмен не начался". ошибка при сериализации EdiMessage
Используя код как:
...
EdiMessage ediMessage = (EdiMessage)instance;
using (FileStream ediStream = File.OpenWrite(file))
{
using (EdifactWriter writer = new EdifactWriter(ediStream))
{
writer.Write(ediMessage);
}
}
Я получаю сообщение об ошибке "Обмен не начался".
След стека под вызовом writer.Write (последняя общедоступная версия Edifabric):
at EdiFabric.Framework.Writers.EdiWriter`2.Write(EdiMessage message)
Это касается объекта INVOIC D96A с фоновой музыкой, немного FTX и UNH. Класс объекта есть. И исключение поднят EdiWriter по вызову writer.Write
,
ediMessage
содержание кажется действительным. В соответствии с документацией Edifabric следует автоматически добавить разделители EDIFACT по умолчанию:
Если явно не указано, писатель будет использовать разделители по умолчанию для каждого стандарта:
Что я забыл настроить?
1 ответ
Кажется, ошибка документации; дефолт не происходит. При изменении кода на:
using (EdifactWriter writer = new EdifactWriter(ediStream))
{
var unb = new UNB(); // Begin interchange.
writer.Write(unb, Separators.Edifact);
writer.Write(ediMessage);
}
unb вставляет заголовок в документ, после чего в этом случае добавляется одно сообщение. Код теперь вызывает "Ссылка на объект, не установленная для экземпляра объекта". со стеком вызовов
at EdiFabric.Core.Model.Edi.EdiMessage.GetControlNumber(String tag, Int32 position)
который был исправлен путем добавления:
ediMessage.ControlNumber = ...;