method parameters empty? XML namespace prefix issue?

Discussion in 'ASP .Net Web Services' started by drb, May 19, 2005.

  1. drb

    drb Guest

    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)
    {
     
    drb, May 19, 2005
    #1
    1. Advertising

  2. drb

    drb Guest

    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)
    {
     
    drb, May 20, 2005
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Mark McKay
    Replies:
    0
    Views:
    460
    Mark McKay
    Dec 1, 2004
  2. Tim Tyler
    Replies:
    36
    Views:
    1,501
    Darryl L. Pierce
    Dec 10, 2004
  3. Susan A. Smith
    Replies:
    8
    Views:
    26,242
  4. Chris  Chiasson
    Replies:
    6
    Views:
    636
    Richard Tobin
    Nov 14, 2006
  5. Replies:
    0
    Views:
    626
Loading...

Share This Page