Unterschiedliche Namespaces zwischen Schemas und Instanzen führen immer wieder zu kryptischen Fehlermeldungen.
Die Erfahrung zeigt, dass es einige besonders tückische Stellen gibt, die man sofort verifizieren sollte.
Typische Fehlermeldungen
Namespace-Referenzierung in der Instanz passt nicht zur deklarierten im Schema
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: "RpIn"
URI: "C:File_InMiniTest*.xml"
Reason: Finding document specification by message type "de.MeineFirma.EAI.Schema.FalscherTyp#MyEntity" failed.
Verify that the schema is deployed properly.
Komplette Namespace-Referenzierung in der Instanz vergessen
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: "RpIn" URI: "C:File_InMiniTest*.xml"
Reason: Finding document specification by message type "MyEntity" failed. Verify that the schema is deployed properly.
Receive-Pipeline falsch konfiguriert, z.B. auf PassThruReceive anstatt auf XMLReceive
The Messaging engine failed to process a message submitted by adapter:FILE Source
URL:C:File_InMiniTest*.xml.
Details:The published message could not be routed because no subscribers were found.
This error occurs if the subscribed orchestration schedule or send port has not been started,
or if some of the message properties necessary for subscription evaluation have not been promoted.
Folgende Einstellungen sollten immer passen
Schema an sich (Auswahl der XSD-Datei)
Namespace: de.MeineFirma.EAI.Schema
Type Name: MeinTyp
macht zusammen für den Full Qualified Name ein de.MeineFirma.EAI.Schema.MeinTyp
Schema-Node (Auswahl von )
Target Namespace: de.MeineFirma.EAI.Schema.MeinTyp
Namespace Referenzierung in der Instanz
...
Encoding der Instanz
ggf die Instanz mit einem Editor neu speichern mit explizitem Setzen eines Encodings
Einheitliche Namespaces
Wenn Schemas und Orchestrations im gleichen Assembly sind, führt das Ändern von Namespaces zu massiven und tückischen Problemen. Das hängt u.a. damit zusammen, dass z.B. die Port Type Definitionen zwar den Namespace des Schema übernehmen, aber nicht den Namespace des Assemblys. Infolgedesse wird im GAC das Schema nicht mehr übers Assembly gefunden.
siehe: http://www.traceofthought.net/PermaLink,guid,cfa8a62a-af33-44b8-a40e-ede8d1b2867c.aspx
Abhilfe: Schema und Orchestration in 2 verschiedene Assembly, dann werden die Assembly-Namespaces bei der Referenzierung mit übernommen