Wednesday, September 29, 2010

Create Simple Web Service in Visual Studio 2008 / 2010

This tutorial explains how we can create simple Web Services using Visual Studio 2008 or Visual Studio 2010.

If you are interested in creating web services in java, please follow my post
Create Web Service in Java Using Apache Axis2 and Eclipse

1. Create the Web Service


First create new project and select "New ASP.NET Web Service Application" and I'm giving the name "MyFirstWebService" to it, you can give any name to your project.


Now you can see auto generated code that you can add methods to create your web service. You can see simple method "HelloWorld" and in this sample code I have removed it.

I'm going to add simple method called "simpleMethod" which takes a string as an input and add "Hello" to beginning of that string. Now the code will appear like bellow.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace MyFirstWebService
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string simpleMethod(String srt)
        {
            return "Hello "+srt;
        }

        [WebMethod]
        public int anotherSimpleMethod(int firstNum, int secondNum)
        {
            return firstNum + secondNum;
        }

    }
}
Then you can run your code and you can see the resulting page as bellow.


2. Create the Client Program


We have created our simple web service and we have to create small
client program to use this web service. There you can open another
instant of Visual Studio and create new "Console Application" project.


Then you have to add Service Reference so that you can access your web service. Here are the screen-shots.




Here you have to give the URL of the web service we created earlier.
As I said before previously created web service application should be
running on another instant of Visual Studio.


Note that I have set the "Web reference name" as "TestWeb".


Now you can update your client program using following code. Note the line 5 "using WebServiceTest.TestWeb;".
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WebServiceTest.TestWeb;

namespace WebServiceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Service1 webservice = new Service1();
            string srt = webservice.simpleMethod("Saranga Rathnayake");
            Console.WriteLine(srt);
            Console.WriteLine(webservice .anotherSimpleMethod(4,3));
        }
    }
}
Now you can run the client program to see the result.


3. Publish Our Web Service in Internet Information Service (IIS)


Let's see how we can publish our web service in IIS. Otherwise you always need to run your web service application in separate VS instant. There first stop the web service application and go to the Solution Explore and Right Click on the project. Then select "Publish...".


Then the following window will appear and there you can directly publish to the IIS by selecting "Web Deploy" as the publishing method. But here I'm going to use the "File System as the publishing method. There you have to provide the target location. I have created new folder called "MyApp" in my D drive and selected it.


Now click "Publish" and check the "MyApp" folder. There you will be able to see Service1.asmx file, Web.config file and bin folder which contains the DLL file has been generated. Then copy this "MyApp" folder to "wwwroot" folder. You may find it in "C:\inetpub\wwwroot".

Now enable IIS in your computer and open IIS Manager. I'm going to add my service to Default Web Site. There Right Click on the "Default Web Site" and click "Add Application...".


There you will get following window. Now you can provide appropriate Alias (I have given testservice) and select the physical path of your application. There you can provide the path to the folder we copied previously as following figure and click Ok.

You have to make sure that the application pool identity has Read access to the physical path. So it is better if you copy your files to the "wwwroot" folder other than keep it in separate partition. Please check the following screen-shot



Now restart the IIS and goto http://localhost/testservice/Service1.asmx. You will be able to see the Web Service running.


Now you have published your web service in IIS and you can update the Client Program by giving the new Web Reference URL using Properties Window.

35 comments:

Anonymous said...

thanks a looooot easy to understand.

Tony said...

Hi, great posting, straightforward.
Did you also post about how to publish your web service in IIS?

Anonymous said...

Thanks a lot.. easy method to create webservice..

Anonymous said...

thanx dude ..its very usefull for me.

Guide said...

It was really helpful. If you are new to making a web service. Snapshots make it much easier to understand.

Anonymous said...

good one

Saranga Rathnayake said...

@ Ashraf Hossain,
Thanks for commenting...

@ Tony,
Yes, I'll post it. Thanks for commenting.

@ Guide,
Thank you very much for your comment.

@ Anonymous Cementer's,
Thank you very much...

Baraa said...

Dear Saranga,
would you give me an example how to send xml file to web service using asp.net
and if I was not wrong if we would send the xml file we should submit username and password.

Saranga Rathnayake said...

@ Baraa,
You can create web service method that accept FileStream to get the task done. Following link will help you.
File Upload with ASP.NET
I didn't get the second part of your question, what do you really want to do ? Do you want to check the username and password using web service ?

Anonymous said...

Sorry... but resolution on the page is too small. One can't see enithing!
Even when zooming in.

Saranga Rathnayake said...

@Anonymous,
What is your OS and browser ?

behzad said...

Hello Saranga,

Many thanks for this post. However, I must say that everything was going well for me until I tried to select add application to IIS. I failed to do so. I have OS XP. Could you please how to do this on this operation system please?

Behzad

DT said...

Very helpful post. Thank you much!

Saranga Rathnayake said...

@ behzad,
First you have to install IIS on XP. Then you can add the application.

@ DT,
Thanks for commenting...

NASIR HUSSAIN said...

very good brother it is excellent

Saranga Rathnayake said...

@ NASIR HUSSAIN,
Glad you are enjoying my blog, Thanks for commenting.

Wretched_Luis said...

Very Helpful example, thanks.

Just 1 thing, for some reason i had to put the c# code inside of Service1.asmx and delete Service1.asmx.cs, bc when i put it in the hosting (Godaddy) didn't work.

Any Idea Why?? The error msg is that cannot find the class, i did check everything and everything was perfect and works perfect in my pc, but in the internet didn't....

Hari said...

Hi, I am new to asp.net programming, i try to develop sample web service in visual studio 2010. By selecting 3.5 frame work and open web service project, but got some errors. Error info:1. he primary reference "System.Web", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v3.5". To resolve this problem, either remove the reference "System.Web" or retarget your application to a framework version which contains "System.Web". 2. The referenced component 'System' could not be found. 3. The referenced component 'System.Web' could not be found. Please help me.

Abdul Malik said...

Thanks guys, you just give me short description about Web Service. easy to try, easy to understand.. thanks

Abhijeet said...

Excellent Article for the understanding of web services..

Sanjay said...

Hi, I have following error while publishing my web service on IIS 7.5, i am using win 7 and VS10
:This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".

Saranga Rathnayake said...

@ Abdul Malik,Abhijeet
Thank you for your comments...

@ Sanjay,
Please follow this thread, hope it will help.
http://forums.iis.net/p/1023069/1390229.aspx

Bala Kiran said...

Good One ! Very easy to understand !

Bala Kiran said...

Thanks Man ! Really simple & easy to understand !

Saranga Rathnayake said...

@ Bala Kiran,
You are welcome...

@ Bala Kiran,
Thanks for commenting...

Ateş GÜRAL said...

Very useful post thank you so much.

Dany said...

Thanks man..........!
Its really useful.........!
Thanks once again...........!

Dany said...

Thanks man............!
Its really useful...........!
Thanks once again.........!

Saranga Rathnayake said...

@ Ateş GÜRAL,
Thanks for commenting.

Saranga Rathnayake said...

@ Dany,
You are welcome...

Don Dada said...

Thanks man, a very helpful and informative post.

Saranga Rathnayake said...

@ Don Dada,
You are welcome.

Daniel P said...

Is it possible to create sessions for users, after they have logged in? I'm trying to produce a whole number of web services that require a user to authenticate first. I've looked online at a few tutorials, but have been finding it hard to understand many of the examples

Shannara said...

You seemed to forgot that there is a required addon to Visual Studio 2010 in order to create an web service project... At least with the VS 2010 Ultimate SP1 version.

Could you please mentioned what the name of the addon is?

The first screenshot with the circles that shows web service (etc) does not exist with the default VS install.

Saranga Rathnayake said...

@ Shannara,
Did you try changing the .NET framework to 3.5 ?

Related Posts :

Related Posts with Thumbnails