使用的代码如下:
...
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)它涉及一个D96A INVOIC对象与BGM,一些FTX和UNH。对象类是。EdiWriter在调用writer.Write时引发异常。
ediMessage内容似乎是有效的。根据Edifabric 文档,它应该自动添加默认的EDIFACT分离器:
如果没有显式指定,写入器将按照以下标准使用默认分隔符:
我忘了做什么了?
发布于 2017-09-05 20:04:25
这似乎是一个文档错误;默认情况不会发生。将代码更改为:
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 = ...;https://stackoverflow.com/questions/46061870
复制相似问题