Issue
I want to build a webservice with this signature, which does not throw an exception if param2 is left empty. Is this possible?
[WebMethod]
public string HelloWorld(string param1, bool param2) { }
The exception is a System.ArgumentException that is thrown when trying to convert the empty string to boolean.
Ideas that have not worked so far:
-
method overloading is not allowed for webservices, like
public string HelloWorld(string param1) { return HelloWorld(param1, false); }
as suggested here:
- make
bool
nullablebool?
. Same exception. - manipulate the WSDL, see this answer
My question is related to this question, but the only answer points to WCF contracts, which I have not used yet.
Solution
You can have a Overloaded Method in webservices with MessageName attribute. This is a workaround to achieve the overloading functionality.
Look at http://msdn.microsoft.com/en-us/library/byxd99hx%28VS.71%29.aspx
[WebMethod(MessageName="Add3")]
public double Add(double dValueOne, double dValueTwo, double dValueThree)
{
return dValueOne + dValueTwo + dValueThree;
}
[WebMethod(MessageName="Add2")]
public int Add(double dValueOne, double dValueTwo)
{
return dValueOne + dValueTwo;
}
The methods will be made visible as Add2
and Add3
to the outside.
Answered By – Rasik Jain
Answer Checked By – Dawn Plyler (BugsFixing Volunteer)