Jacques Bronkhorst
Jacques Bronkhorst

Reputation: 1695

How to pass optional parameters for web method?

I have a web method with multiple parameters. The web method is only dependent on 2 fields, the rest are all optional.

   [OperationContract]
    public string WarehouseContactInformation(int WAID (Required), string CN (Required), string CT (Optional), string CC (Optional), string CFN (Optional), string CD (Optional), string CE (Optional),string CW (Optional))

How to I declare these parameters as optional so that when I call the Web Method I only have to pass through the fields that i have values for, example:

WarehouseContactInformation(1,'Bill','00012311')
WarehouseContactInformation(1,'Bill','00012311','12415415','123525')

Upvotes: 7

Views: 16629

Answers (2)

Alex
Alex

Reputation: 8937

You can't. Web methods doesn't support optional parameters. When you generate proxy for web method, you make get the specific signature, according to which you client and server would exchange the messages. But it can't pass the optional parameters. You can use default parameters on the server side, but no optional.

Upvotes: 12

Mogli
Mogli

Reputation: 2012

What i did is: send the parameter binded with XML, and don't bind the values of optional parameters leave that blank.

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(
            "<registration>" +
            "<field1>" + value + "</field1>" +
            "<field2>" + value(or leave blank) + "</field2>" +
            "<field3>" + value + "</field3>" +
            "<field4>" + value + "</field4>" +
            "</registration>");

        int status = objectOfService.methodName(xmlDoc);

and in web service you can do like

    public int UpdateUser(XmlNode node)
    {
       String filed1Value=node["field1"].InnerText;
    }

Hope it helps.

Upvotes: 1

Related Questions