12-21-05 10:54 PM
I am stumped.
I use WebReference wizard in an orchestration to create the wsdl and web
ports etc of a web service the WebMethods of which accept an XmlDocument and
return an XmlDocument.
The orchestration issues requests and receives responses on WebPorts.
I have no trouble creating the XmlDocument to use on the request operation
and the Web Service can be seen to act on this and send back a response. The
trouble is that there is an exception that would appear to originate from th
e
response operation.
I have an exception block on the scope calling the WebMethod and use an
Expression shape here to write the exception to the eventlog. This reveals
the following:
System.Web.Services.Protocols.SoapException: Invalid envelope namespace
at Microsoft.Biztalk.ExceptionUtil.ReadSoapException(XmlReader reader)
at Microsoft.BizTalk.XLANGs.BTXEngine.SoapExceptionMsg.get_TheException()
at
Microsoft.BizTalk.XLANGs.BTXEngine.BTXLogicalPortBinding.VerifyMessage(Envel
ope env, String typeName, Context cxt, OperationInfo op)
at
Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.VerifyTransport(Envelope env,
Int32 operationId, Context ctx)
at Microsoft.XLANGs.Core.Subscription.Receive(Segment s, Context ctx,
Envelope& env, Boolean topOnly)
at Microsoft.XLANGs.Core.PortBase.GetMessageId(Subscription subscription,
Segment currentSegment, Context cxt, Envelope& env, CachedObject location)
at orchReleaseOfCharge.orcROC.segment2(StopConditions stopOn)
at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s,
StopConditions stopCond, Exception& exp)
If I take the message that is constructed by the Web Service at source and
validate it with the schema which it will ultimately be processed with, it
validates correctly. The trouble is that the WebPort does not allow me to
change the type of the response message to be strongly typed. The WebService
cannot be changed to use strongly typed messages and so uses XmlDocument.
I try to assign the response to a variable of XmlDocument type and the
orchestration Expression shape lets me do this. I then assign it to a
strongly typed message. This too is OK. The orchestration compiles and
deploys just fine.
The problem arises at runtime and processing never gets as far as any off
the assignments above. In consuming a WebService, Biztalk should not be
permitted to enforce a requirement on the design of the WebService. If the
WebService sends an XmlDocument as the return payload, then where and what
and why the SoapException. Where is the envelope namespace defined? Is
there a problem with the wsdl? The XmlDocument namespace is distinct from
this. The WebService would create the SoapEnvelope and wsdl should be able
to correctly interpret this to allow the WebPorts to be usable or am I wrong
?
If anyone can throw some light on this it would be appreciated.
cheers
--
PeterW
[ Post a follow-up to this message ]
|