Click here to Skip to main content
15,867,308 members
Articles / Web Development / XHTML

Function Overloading in Web Services

Rate me:
Please Sign up or sign in to vote.
3.23/5 (20 votes)
8 Oct 2008CPOL1 min read 105.8K   468   22   11
How to perform function overloading in Web Services

Introduction

The function overloading in Web Service is not as straightforward as in class. While trying to overload member function, we make two or more methods with the same name with different parameters. But this will not work in web services and will show runtime error because WSDL is not supported by the same method name.

Overloading Web Services

While trying to overload Web Methods in Web Services and after doing the build, it will work successfully. But when we try to run or consume, it will show an error message. We can show this using an example.

C#
namespace TestOverloadingWebService
{ 
    [WebService(Namespace = "http://tempuri.org/", Description=" <b> Function 
    overloading in Web Services </b>")] 
public class OverloadingInWebService : System.Web.Services.WebService 
{ 
    [WebMethod()] 
    public int Add(int a, int b) 
    { 
        return (a + b); 
    } 
    [WebMethod()] 
    public float Add(float a, float b) 
    { 
        return (a + b); 
    } 
} 
}

In the above example, we made one web service having class OverloadingInWebService. In the Web Service, we have added attribute Description, which is used to describe the web service purpose to client. In the above Web Service, we have two overloaded WebMethods:

C#
public int Add(int a, int b) 

and

C#
public float Add(float a, float b)

While running this Web service, it will show the following runtime error.

ViewError.JPG

Solution for the Above Error

The procedure to solve this problem is very easy. Start each method with a Web Method attribute. Add Description property to add a description of web method and MessageName property to change web method name.

C#
[WebMethod(MessageName = "<name>", Description = "<description>")]
C#
namespace TestOverloadingWebService 
{ 
    [WebService(Namespace = "http://tempuri.org/", Description=" <b> Function 
    overloading in Web Services </b>")] 
public class OverloadingInWebService : System.Web.Services.WebService 
{ 
    [WebMethod(MessageName = "AddInt", Description = "Add two integer 
        Value", EnableSession = true)] 
    public int Add(int a, int b) 
    { 
        return (a + b); 
    } 
    [WebMethod(MessageName = "AddFloat", Description = "Add two Float  
        Value", EnableSession = true)] 
    public float Add(float a, float b) 
    { 
        return (a + b); 
    } 
} 
}

Reason for the Above Error

The Overloading is supported by web services. But when WSDL (Web Service Description Language) is generated, it will not be able to make the difference between methods because WSDL does not deal on the base of parameters. By passing web methods –‘MessageName Property’, it changes the method name in WSDL. See the WSDL given below, the operation name is Add but the input method name is AddInt as well as output method name is also same (AddInt). The same will apply for Float also.

XML
<wsdl:operation name="Add"> 
            <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Add 
            two integer Value</wsdl:documentation> 
            <wsdl:input name="AddInt" message="tns:AddIntSoapIn" /> 
            <wsdl:output name="AddInt" message="tns:AddIntSoapOut" /> 
</wsdl:operation> 
<wsdl:operation name="Add"> 
            <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Add     
            two Float Value</wsdl:documentation> 
            <wsdl:input name="AddFloat" message="tns:AddFloatSoapIn" /> 
            <wsdl:output name="AddFloat" message="tns:AddFloatSoapOut" /> 
</wsdl:operation>

History

  • 9th October, 2008: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer Hexaware Technologies
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Sarvesh Kushwaha23-Dec-12 20:32
Sarvesh Kushwaha23-Dec-12 20:32 
GeneralThanks a lot Pin
Prashant Trambake20-Jun-12 0:29
Prashant Trambake20-Jun-12 0:29 
Really help me. Thanks a lot. Smile | :)
GeneralMy vote of 5 Pin
BrianBissell30-Aug-11 3:29
BrianBissell30-Aug-11 3:29 
GeneralMy vote of 5 Pin
mailtoravi10126-Feb-11 19:24
mailtoravi10126-Feb-11 19:24 
GeneralMy vote of 5 Pin
Rathika Krishnavelu27-Sep-10 22:34
Rathika Krishnavelu27-Sep-10 22:34 
GeneralCheap implementation Pin
Donsw25-Jan-09 17:16
Donsw25-Jan-09 17:16 
GeneralRe: Cheap implementation Pin
ElCaito11-Feb-10 17:47
ElCaito11-Feb-10 17:47 
QuestionWhat about BP standard? Pin
BartekKw14-Oct-08 21:20
BartekKw14-Oct-08 21:20 
AnswerRe: What about BP standard? Pin
easton21-Feb-09 13:51
easton21-Feb-09 13:51 
Generalnice article Pin
Kapil Thakur13-Oct-08 19:46
Kapil Thakur13-Oct-08 19:46 
GeneralRe: nice article Pin
dheerajindian13-Oct-08 19:57
dheerajindian13-Oct-08 19:57 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.