メッセージを作成するマップがあり、それが別のマップに渡されます (すべてオーケストレーションで)。
最初のマップからのメッセージ出力を調べると、メッセージに EF BB BF バイト オーダー マークが含まれていることがわかります。
2 番目のマップが実行されると、「ルート レベルのデータが無効です。1 行目、61 番目の位置」という例外がスローされます。
xlang/s エンジン イベント ログ エントリ: キャッチされない例外 (以下の「内部例外」を参照) により、サービス「MyCompany.MyOrchestration(004464ca-1c34-e342-591d-5e8182a4be18)」のインスタンスが中断されました。
サービス インスタンスは、管理上再開または終了されるまで中断されたままになります。
再開された場合、インスタンスは最後に永続化された状態から継続し、同じ予期しない例外を再スローする可能性があります。
InstanceId: 62d99333-8dc4-4ca4-9e5b-7fdf8583e081 シェイプ名: conCDA
ShapeId: ba722b56-c115-4abb-b40c-211824369266
スローされる例外: セグメント 1、進行状況 15
内部例外: ルート レベルのデータが無効です。行 1、位置 61。
例外の種類: XmlException
ソース: System.Xml
ターゲット サイト: Void Throw(System.Exception) 以下は、例外が発生した場所を特定するスタック トレースです。System.Xml.XmlTextReaderImpl.Throw(Exception e)
で System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
で System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
で System.Xml.XmlTextReaderImpl.ParseDocumentContent()
で System.
System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc) の Xml.XmlTextReaderImpl.Read()
System.Xml.XmlLoader.Load(XmlDocument doc、XmlReader リーダー、ブール値の preserveWhitespace
) Microsoft.XLANGs.Core.Service.Transform.ShredXmlDocument(Stream inStream、Object[] outParams、String mapName、XmlDeclaration xmlDecl) の
System.Xml.XmlDocument.Load(TextReader txtReader)
Microsoft.XLANGs.Core.Service.ApplyInMemoryTransform (型 mapRef、TransformMetaData trfMetaData、オブジェクト [] outParams、ストリーム [] inStreams)
で Microsoft.XLANGs.Core.Service.ApplyTransform (型 mapRef、オブジェクト [] outParams、オブジェクト [] inParams ) Microsoft.XLANGs.Core.SegmentScheduler.RunASegment
で MyCompany.MyOrchestration.segment1(StopConditions stopOn)
で (Segment s、StopConditions stopCond、Exception& exp)
最初のマップにバイト オーダー マーキングを追加しないようにするにはどうすればよいですか?
編集: 最初のマップは、入力側に 2 つのメッセージがあり、出力側の単一メッセージにマップされるマップです。最初のメッセージは構造によるリンクを使用してすべてのノードをマップし、2 番目のメッセージは大量コピー機能を使用します。メッセージをバイト レベルで表示しても、文字 61 に面白い文字は表示されません。BOM が見えるので、それが問題だと思っていました。