method parameters empty? XML namespace prefix issue?

D

drb

Hi,

I'm trying to create a simple test/dummy .NET XML web service (using
WSDL/XSD and the WSDL.exe tool) that an existing .NET Remoting XML web
service client can talk to.

The good news is it seems to be very close to working. The not-so-good news
is that when a method is invoked, when I breakpoint on the server side, all
the parameters to the method are either null (strings) or zero (ints), even
though the client specified real values for all of them. Running the SOAP
TRACE revealed the following:

HTTP headers:

<HTTPHeaders>
<user-agent>Mozilla/4.0+(compatible; MSIE 6.0; Windows 5.1.2600.0; MS .NET
Remoting; MS .NET CLR 1.1.4322.2032 )</user-agent>
<content-type>text/xml; charset="utf-8"</content-type>

<soapaction>"http://schemas.microsoft.com/clr/nsassem/xxxxxx/TSGsmInterface#Downlink"</soapaction>
<content-length>716</content-length>
<expect>100-continue</expect>
<host>f812f61:8080</host>
</HTTPHeaders>

Request:

<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<i2:Downlink id="ref-1"
xmlns:i2="http://schemas.microsoft.com/clr/nsassem/xxxxxx/TSGsmInterface">
<key id="ref-3">92</key>
<priority>1</priority>
<message id="ref-4">A1234560765432101000003</message>
<telephone id="ref-5">9123-456-7890</telephone>
</i2:Downlink>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Does the fact that there is no "i2:" namespace prefix on the parameters (ex.
"<key>", "<prioirity>", etc.) cause the server/service to not see the values
somehow? (I assume this "i2" namespace was created by the XML/SOAP
serializer on the client side?) I've defined the service method is defined
(C#) as follows:

[System.Web.Services.WebMethod(Description="Send a Downlink Message to the
GSM Provider")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface#Downlink",
RequestElementName="GSMDownlink",
RequestNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface/types",
ResponseElementName="GSMDownlinkResponse",
ResponseNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface/types",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("uplinkMatchID")]
override public string Downlink(string key, int priority, string message,
string telephone)
{
 
D

drb

Well, I managed to brute-force/trial-and-error until I got the desired
result. Looks like the problem was in the WSDL file I wrote to generate the
service method stub.

In my previous post I listed the code generated for the service method.
When I made the following changes, things worked:

[System.Web.Services.WebMethod(Description="Send a Downlink Message to the
GSM Provider")
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface#Downlink"
RequestNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface"
ResponseNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("uplinkMatchID")]
override public string
Downlink([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
string key,
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
int priority,
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
string message,
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] string telephone)
{
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,772
Messages
2,569,591
Members
45,102
Latest member
GregoryGri
Top