BizTalk WCF-BasicHttp adapter issue with http://www.w3.org/2001/XMLSchema namespace
I am using the WCF-BasicHttp adapter to consume outer Web-service and getting the error (actually if I have retry>0, I am getting Warning first. See below:
Event Type: Warning
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5743
Date: ...
Time: ...
User: ...
Computer: ...
Description:
The adapter failed to transmit message going to send port "..." with URL "...". It will be retransmitted after the retry interval specified for this Send Port. Details:"Unable to read the stream produced by the pipeline.
Details: The value 'd:date' is invalid according to its schema type 'http://www.w3.org/2001/XMLSchema:QName' - 'd' is an undeclared namespace. ".
...
or (After retry the previous message the retry limit for this port)
Event Type: Error
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5754
Date: ...
Time: ...
User: ...
Computer: ...
Description:
A message sent to adapter "FILE" on send port "..." with URI "..." is suspended.
Error details: Unable to read the stream produced by the pipeline.
Details: The value 'd:date' is invalid according to its schema type 'http://www.w3.org/2001/XMLSchema:QName' - 'd' is an undeclared namespace.
MessageId: ...
InstanceID: ...
...
Very srange. When I tried the same Web-service with SoapUi, the result of the verification of the Response message is similar.
line 8: Invalid xsi:type qname: 'd:string' in element ...@http://...
What is wrong with response message?
Response Message:
<e:Envelope xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:wn1="..." xmlns:wn2="..." xmlns:wn0="..." xmlns:e="http://schemas.xmlsoap.org/soap/envelope/">
<e:Body>
<wn2:ActionResponse>
<wn2:MyResponse i:type="wn2:MyResponseType">
<wn2:Detail i:nil="true"/>
<wn2:MyMsg i:type="wn2:ArrayOfMyMsgType">
<wn2:MyMsgType i:type="wn2:MyMsgType">
<wn2:MsgDescriptionText i:type="d:string">...</wn2:MsgDescriptionText>
<wn2:MsgIdentificationID i:type="d:string">...</wn2:MsgIdentificationID>
<wn2:MsgSeverityLevelCode i:type="wn2:MsgSeverityLevelType">...</wn2:MsgSeverityLevelCode>
<wn2:MsgSourceText i:nil="true"/>
</wn2:MyMsgType>
</wn2:MyMsg>
</wn2:MyResponse>
</wn2:ActionResponse>
</e:Body>
</e:Envelope>
Investigation discovered that the issue is in the namespace prefix "d". If I change it to the "xsd", the error disappeared.
Questions:
How to work around this?
Is it the error in the response message?
Is it an error in the WCF-BasicHttp adapter?
How to work around this issue?
I changed the WCF-BasicHttp port for the old SOAP port and SOAP port works fine.
Is it the error in the response message?
I didn't find any limits for the "http://www.w3.org/2001/XMLSchema" namespace and for prefixes for it. The only limit is "don't use the prefixes, started with 'xml' letters". It is the common practice to use "xsd" prefix for the "http://www.w3.org/2001/XMLSchema" namespace. But it is not the rule.
Seems the WCF-BasicHttp adapter is "too smart".
Is it an error in the WCF-BasicHttp adapter?
possible...
Print | posted on Monday, June 29, 2009 9:31 PM