How to create restful service in WCF
Web .config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For
more information on Entity Framework configuration, visit
http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,
EntityFramework, Version=5.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5" />
</system.web>
<system.serviceModel>
<services>
<service name ="wcfInformation.Service1">
<endpoint address ="" binding ="webHttpBinding" contract ="wcfInformation.IService1" behaviorConfiguration ="restfulBehavior" ></endpoint>
<endpoint address ="mex" binding ="mexHttpBinding" contract ="IMetadataExchange"></endpoint>
</service>
</services>
<standardEndpoints >
<webHttpEndpoint>
<standardEndpoint name ="" helpEnabled ="true" automaticFormatSelectionEnabled ="false" maxReceivedMessageSize ="9147483647"></standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
<bindings>
<webHttpBinding>
<binding name="webHttpBinding" maxBufferSize="2147483647" maxBufferPoolSize="9147483647" maxReceivedMessageSize="9147483647" openTimeout="00:25:00" closeTimeout="00:25:00" sendTimeout="00:25:00" receiveTimeout="00:25:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
<binding name="HttpStreaming" maxReceivedMessageSize="2147483647" transferMode="Streamed"/>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="restfulBehavior">
<webHttp helpEnabled="true"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<!--
To avoid disclosing metadata information, set the value below to false before
deployment -->
<serviceMetadata httpGetEnabled="true" />
<!--
To receive exception details in faults for debugging purposes, set the value
below to true. Set to false before
deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<!--
To browse web app root directory during
debugging, set the value below to true.
Set to false before deployment to avoid
disclosing web app folder information.
-->
<directoryBrowse enabled="true" />
</system.webServer>
<connectionStrings>
<add name="mvcEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider
connection string="data source=RAMULAPTOP-PC\RAMUSQL;initial
catalog=mvc;persist security info=True;user
id=sa;password=mysachi;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,
EntityFramework" />
</entityFramework>
</configuration>
IServic.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace wcfInformation
{
// NOTE:
You can use the "Rename" command on the "Refactor" menu to
change the interface name "IService1" in both code and config file
together.
[ServiceContract]
public interface IService1
{
[OperationContract(Name = "List")]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "List?id={id}")]
List<student_info> List(int id);
// TODO:
Add your service operations here
}
[DataContract]
public class student_info
{
[DataMember(Name = "ID", Order = 1)]
public int id { get; set; }
[DataMember(Name = "Student
Name", Order = 2)]
public string name { get; set; }
}
// Use a
data contract as illustrated in the sample below to add composite types to
service operations.
}
Sevice.svc.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace wcfInformation
{
public class Service1 : IService1
{
List<student_info> lststuentInfo = new List<student_info>();
student_info objst_info;
student dModel = new student();
public List<student_info> List(int id)
{
using (var ctx = new mvcEntities())
{
if (id == 0)
{
var v = ctx.students.ToList();
foreach (var vd in v)
{
objst_info = new student_info();
objst_info.id = vd.id;
objst_info.name =
vd.name;
lststuentInfo.Add(objst_info);
}
}
else
{
var v = ctx.students.Where(x
=> x.id == id).Select(x => x).ToList();
foreach (var vd in v)
{
objst_info.id = vd.id;
objst_info.name =
vd.name;
lststuentInfo.Add(objst_info);
}
}
return lststuentInfo;
}
}
}
}