Jon
Jon

Reputation: 23

passing custom object as parameter to a webmethod of asp.net web service

I have a custom class declared as follows (in vb.net)

<Serializable()>
Public Class NumInfo 
    Public n As String     
    Public f As Integer     
    Public fc As char()     
    Public t As Integer     
    Public tc As char()     
    Private validFlag As Boolean = True    

    Public Sub New()    
    End Sub 
    'I also have public properties(read/write) for all the public variables

End Class

In my service.asmx codebehind class I have a webmethod as follows:

  Public Function ConvertTo(ByVal info As NumInfo) As String        
      Return mbc(info)<br>'mbc is another function defined in my service.asmx "service" class
  End Function

The problem is that when I start debugging it to test it, the page that I get does not contain any fields where I could input the values for the public fields of numInfo. How do I initialise the class? There is no "Invoke" button either. All I see are soap details as below:

ConvertTo
Test
The test form is only available for methods with primitive types as parameters.
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The
placeholders shown need to be replaced with actual values.
POST /Converter/BC.asmx
HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://Services/ConvertTo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ConvertTo xmlns="http://Services/">
<info>
<n>string</n>
<f>int&lt/f>
<fc>
<char>char</char>
<char>char>/char>
</fc>
..etc..



What am I doing wrong? For the record I tried replacing char() with string to see if it was the array causing problems but that didn't help either. I'm fairly new to web services. I tried replacing the custom object parameter with a primitive parameter just to check how things worked and it rendered a page with an input field and invoke button. I just can't seem to get it working with custom object. Help!

Upvotes: 2

Views: 4023

Answers (1)

earthling
earthling

Reputation: 5264

as the message says "The test form is only available for methods with primitive types as parameters." meaning string, bool, int etc.

I find it is simple enough to set up a test page where I can define my object and pass it to the web method for debugging purposes.

Upvotes: 2

Related Questions