There are few build in web services available in sharepoint which we generally use. Incase those are not fit for our requirement then we go for creation of our ouwn custom web service like below
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/" />
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/" />
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)),
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); %> />
(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> />
<soap12:address location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode
(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> />
(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.
No comments:
Post a Comment