Blue Theme Orange Theme Green Theme Red Theme
 
Nevron Gauge for SharePoint
Home | Forums | ASP.NET 2.0 Tutorials | Web Services | How Do I...? | Class Browser | WPF Quick Starts | Advertise with Us
 | Consulting  
Submit an Article Submit a Blog 
Search :       Advanced Search »
Home » Blogs Home » Blog Detail

How to create a custom web service in SharePoint 2010

 by Vijay Settu on Jan 20, 2012

In this blog I will describe How to create a custom web service in SharePoint 2010.
Comments: 0 Views: 525 Printable Version 
There are numbers of out of the box web services present in SharePoint that will do most of the common tasks like methods for working with list ,sites and sub sites, users and groups etc. For using these web services you need to add the reference of the web service . But if your requirement doesn't fit with any of the web methods like parameters of the method or functionality of the method then you need to create a custom web service.

Below are the steps how you can create a custom web service.

Step: 1

Create an asp.net web service project in the visual studio. Name the project as TestServiceProject and rename the Service1.asmx file to TestWebService.asmx.

This .asmx file will contain the web methods and the programming logic. Now we 
can go to the TestWebService.asmx.cs page and define a web method.

Let's say i want to create a web method which will do some operations on the list
[WebMethod]

public string TestMethod(string listName , SPWeb oWeb)
{
//Write the logic for the operation
}

Step: 2

In Solution Explorer, right-click TestWebService.asmx and select View Markup.

You will see the following line:

<%@ WebService Language="C#" CodeBehind="Service1.asmx.cs" %>
Change this to:
<%@ WebService Language="C#" %>
 
Step: 3

Now create a strong key name for the class library project and compile the project

Step: 4

Now host this application in your IIS. Now we need to generate the .disco and the .wsdl files.
To generate the .disco and .wsdl file we need to run the disco.exe command.
The disco.exe file will be present at the path "C:\Program Files\Microsoft SDKs

\Windows\v6.0A\Bin”.
 
Now open the command prompt and run the disco command as:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin > disco http://localhost:5050
/TestServiceProject/TestWebService.asmx

Step: 5

Now open both the TestWebService.disco and TestWebService.wsdl file which will

be present at "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin" and replace

the XML processing instruction


"<?xml version="1.0" encoding="utf-8"?>"
with

<%@ Page Language="C#" Inherits="System.Web.UI.Page"%>
<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint.Utilities" %> <%@ Import Namespace="Microsoft.SharePoint" %>
<% Response.ContentType = "text/xml"; %>


Step: 6

In TestWebService.disco file modify the contactref and the soap address tags to:


<contractRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode
(SPWeb.OriginalBaseUrl(Request) + "?wsdl"),Response.Output="");

%>docRef=<%SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode

(SPWeb.OriginalBaseUrl(Request)),Response.Output);

%>xmlns="http://schemas.xmlsoap.org/disco/scl/" />

<soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode

(SPWeb.OriginalBaseUrl(Request)),Response.Output);

%>xmlns:q1="http://tempuri.org" binding="q1:TestWebServiceSoap" 

xmlns="http://schemas.xmlsoap.org/disco/soap/" />
<soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode
(SPWeb.OriginalBaseUrl(Request)),Response.Output);
%>xmlns:q2="http://tempuri.org" binding="q2:TestWebServiceSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />  

Step: 7

In TestWebService.wsdl file modify the soap:address and soap12:address to:
 
<soap:address location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request))
,Response.Output); %> />
 
<soap12:address location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request))
,Response.Output); %> />

Now save the two files as TestWebServicedisco.aspx and TestWebServicewsdl.aspx.
 
Step: 8

Now copy the files TestWebService.asmx, TestWebServicedisco.aspx and TestWebServicewsdl.aspx to the "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI" folder

Step: 9

To include the Web service in the list of web services on the server, open the spdisco.aspx file which is present at "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI" and add the following within the discovery element.
Now save the two files as TestWebServicedisco.aspx and TestWebServicewsdl.aspx.

<contractRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/TestWebService.asmx?wsdl"), Response.Output); %> docRef=
<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/TestWebService.asmx"), Response.Output); %>
xmlns="http://schemas.xmlsoap.org/disco/scl/" />

 
<soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/TestWebService.asmx"), Response.Output); %>
xmlns:q1="http://schemas.microsoft.com/sharepoint/soap/directory/" binding="q1:TestWebServiceSoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />

Step: 10

Now deploy the TestServiceProject.dll to GAC and the bin directory of the site on which you want to use the web service. Now you can consume the web service like the out of the box web service provided by SharePoint.
Comment Request!
Thank you for reading this post. Please post your feedback, question, or comments about this post Here.
 
What do you say about this post? Post a comment here
*Title:
*Comment:
 
Comments not available.
Nevron Gauge for SharePoint
Become a Sponsor

 Blogger's Profile
Age: Not Available
Location:
Title: Developer
Joined: Jan 16, 2012
Education: Not Available
 More Blogs from this Blogger
No record available
 Latest Blogs
[Video] OnClose Handler
[Video] Storing and Loading the Window and Toolbar position
The Euclidean Algorithm
Swapping Exe Process
How Exe file is Generated by VS2005 C++ Project?
What is Exe
Header files: Multiple Inclusion problem - Solution B
Header files: Multiple Inclusion problem - Solution A
Header files: Multiple Inclusion problem - Reason
Header files: Multiple Inclusion problem
View all »
 Latest Jobs
More ... 
 Latest Interview Questions
More ... 
Team Foundation Server Hosting
 © 2012  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.