Goal
To create a WCF REST(Representational State Transfer) service. The main goal is to show it in the most simplest way.Follow the below given steps
- Open Visual Studio 2010.
- File >> New Project >> WCF >> WCF Service Application. I named it SimpleWCFService.
- I removed the default "IService1.cs" and "Service1.svc". Added a new "Sample.svc". This will automatically create an interface in file "ISample.cs". The structure will look like the image given below.
ISample.cs
#region System using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.ServiceModel.Web; #endregion namespace SimpleWCFService { [ServiceContract] public interface ISample { /// <summary> /// The parameters are passed in URL expression. /// </summary> /// <param name="Param1"></param> /// <param name="Param2"></param> /// <returns></returns> [OperationContract] [WebGet(UriTemplate = "SampleCheck/{Param1}/{Param2}")] string SampleCheckUrl(string Param1, string Param2); /// <summary> /// The parameters are passed as QueryString. /// </summary> /// <param name="Param1">{Param1}</param> /// <param name="Param2">{Param2}</param> /// <returns></returns> [OperationContract] [WebGet(UriTemplate = "SampleCheck?Param1={Param1}&Param2={Param2}")] string SampleCheckQueryString(string Param1, string Param2); } }
Sample.svc.cs
#region System using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.Web.Script.Serialization; #endregion namespace SimpleWCFService { /// <summary> /// Simple Class /// </summary> [DataContract] public class SimpleClass { [DataMember] public string CParam1 { get; set; } [DataMember] public string CParam2 { get; set; } [DataMember] public string CMessage { get; set; } } /// <summary> /// The simplest way to use a WCF REST(Representational State Transfer) service /// </summary> public class Sample : ISample { /// <summary> /// The parameters are passed in URL expression. /// </summary> /// <param name="Param1"></param> /// <param name="Param2"></param> /// <returns></returns> public string SampleCheckUrl(string Param1, string Param2) { JavaScriptSerializer _jScript = new JavaScriptSerializer(); SimpleClass _simple = new SimpleClass() { CParam1 = Param1, CParam2 = Param2, CMessage = "Success with SampleCheckUrl(int Param1, string Param2)!" }; return _jScript.Serialize(_simple); } /// <summary> /// The parameters are passed as QueryString. /// </summary> /// <param name="Param1"></param> /// <param name="Param2"></param> /// <returns></returns> public string SampleCheckQueryString(string Param1, string Param2) { JavaScriptSerializer _jScript = new JavaScriptSerializer(); SimpleClass _simple = new SimpleClass() { CParam1 = Param1, CParam2 = Param2, CMessage = "Success with SampleCheckQueryString(int Param1, string Param2)!" }; return _jScript.Serialize(_simple); } } }
Web.config - MOST IMPORTANT
<?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="SimpleWCFServiceBC"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="restBehaviour"> <webHttp automaticFormatSelectionEnabled="true" helpEnabled="true"/> </behavior> </endpointBehaviors> </behaviors> <bindings> <webHttpBinding> <binding name="RestBinding" /> </webHttpBinding> <basicHttpBinding> </basicHttpBinding> </bindings> <services> <service name="SimpleWCFService.Sample" behaviorConfiguration="SimpleWCFServiceBC"> <endpoint address="" binding="basicHttpBinding" contract="SimpleWCFService.ISample"></endpoint> <endpoint address="rest" binding="webHttpBinding" behaviorConfiguration="restBehaviour" bindingConfiguration="RestBinding" contract="SimpleWCFService.ISample"></endpoint> <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> </service> </services> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>
Checking REST Service - URL FORMAT
Navigate to the below given url(Note:Replace the port number.)."http://{LOCALHOST:PORTNUMBER}/Sample.svc/rest/SampleCheck/Args1/Args2".
This should give the result in below given format.
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"CParam1":"Args1","CParam2":"Args2","CMessage":"Success with SampleCheckUrl(int Param1, string Param2)!"}</string>
Checking REST Service - QueryString
Navigate to the below given url(Note:Replace the port number.)."http://{LOCALHOST:PORTNUMBER/Sample.svc/rest/SampleCheck?Param1=Args1&Param2=Args2".
This should give the result in below given format.
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"CParam1":"Args1","CParam2":"Args2","CMessage":"Success with SampleCheckQueryString(int Param1, string Param2)!"}</string>
I spent a lot of time trying to figure this out so writing this up for the ones who just want solutions. Let me know if this helped.
No comments:
Post a Comment