BizTalk Server 2006 Error: Loading document specification XYZ from assembly XYZ failed.

Wie man einen BizTalk-Fehler beim Laden einer Schema-Assembly im XML-Receive-Pipeline behebt, durch getrennte Assemblies, korrekte Target-Namespaces und Multi-part Message Types.

Obwohl die Assemblies mit den Schemas im GAC und deployed sind, kommt es beim Aufpicken einer Schemainstanz zu 2 Fehlereinträgen im Eventlog und die Message wird supended.

Fehler

Event Id: 5753
A message received by adapter "FILE" on receive location "XML" with URI "C:File_InORDERS01*.xml" is suspended. 
Error details:
There was a failure executing the receive pipeline:
"Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Source: "XML disassembler"
Receive Port: "RpORDERS01"
URI: "C:File_InORDERS01*.xml"
Reason: Loading document specification from assembly failed. Verify that the schema for this document specification is deployed and placed in the Global Assembly Cache.

und

Event Id: 5719
There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Source: "XML disassembler"
Receive Port: "RpORDERS01"
URI: "C:File_InORDERS01*.xml"
Reason: Loading document specification from assembly failed. Verify that the schema for this document specification is deployed and placed in the Global Assembly Cache.

Lösung

  1. Trennung der Solution in jeweils eigene Assemblies für Schemas, Pipelines, Maps und Orchestrations
  2. Sicherstellen, dass der Target-Namespace vom Schema (Schema-Node anklicken | Properties | Target Namespace) zu dem in der Instanz passt (Attribut xmlns am Root-Node)
  3. Verwenden eines Multi-part Message Type der auf ein Schema verweist. Operations und Messages verwenden dann diesen Multi-part Message Type anstatt selbst das Schema zu referenzieren.