Click here to Skip to main content
13,458,880 members
Click here to Skip to main content
Add your own
alternative version


80 bookmarked
Posted 10 Mar 2011

How to create a JSON WCF RESTful Service in 60 seconds

, 10 Mar 2011
Rate this:
Please Sign up or sign in to vote.
How to expose JSON data over a RESTful interface.

WCF makes it very easy to expose JSON data over a RESTful interface, as long as you are aware of a couple of “gotchas” in advance.

This article will explain those to you, so you can focus on your business logic rather than configuration of your WCF services.

We start this example by creating a WCF Service Library project:


Next we need to add a reference to the System.ServiceModel.Web framework.  Right click on your project file and select Add Reference…


As this framework is not part of the .Net Framework 4 Client Profile, Visual Studio kindly informs us that it will update our target Framework to the full version of .Net Framework 4.  Click Yes to accept this change:


We are now ready to update our code.

Copy and paste the following code into the App.Config file:

<?xml version="1.0"?>
	  <service name="WcfJsonRestService.Service1">
		<endpoint address="http://localhost:8732/service1" 


		  <webHttp />
	<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>

Notice the binding is set to webHttpBinding as opposed to the normal project template default of wsHttpBinding. 

The other important change is the addition of an endpointBehavior for WebHttp.

These two changes are required to enable JSON over REST for WCF.

Copy and paste the following code into the IService1 file:

using System.ServiceModel;

namespace WcfJsonRestService
    public interface IService1
        Person GetData(string id);

Notice we are accepting an “In” parameter for id of datatype string.  For this example we are returning a custom type of Person.

Copy and paste the following code into the Service1.cs file:

using System;
using System.ServiceModel.Web;

namespace WcfJsonRestService
    public class Service1 : IService1
        [WebInvoke(Method = "GET", 
                    ResponseFormat = WebMessageFormat.Json, 
                    UriTemplate = "data/{id}")]
        public Person GetData(string id)
            // lookup person with the requested id 
            return new Person()
                           Id = Convert.ToInt32(id), 
                           Name = "Leo Messi"

    public class Person
        public int Id { get; set; }
        public string Name { get; set; }

The key elements here are the attributes applied to the method.  We are enabling the method to be called over HTTP GET, returning the data in Json format and setting the Uri template to ensure we are using a RESTful interface.

To test your brand new service we will pass in the id value of 10 simply by opening your favourite browser and pasting in the following URL: 




This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Software Developer (Senior)
United Kingdom United Kingdom
Developer of .Net Enterprise solutions in the City of London

You may also be interested in...


Comments and Discussions

SuggestionAn alternative walkthough.. Pin
MikeGledhill5-Feb-13 7:06
memberMikeGledhill5-Feb-13 7:06 
GeneralRe: An alternative walkthough.. Pin
kevininstructor3-Mar-14 8:31
memberkevininstructor3-Mar-14 8:31 
GeneralRe: An alternative walkthough.. Pin
Fawad Raza20-Dec-15 23:03
memberFawad Raza20-Dec-15 23:03 
GeneralMy vote of 5 Pin
Joel Ivory Johnson30-Jan-13 4:56
memberJoel Ivory Johnson30-Jan-13 4:56 
QuestionPublish it on IIS 7 Pin
m.gaber26-Dec-12 3:26
memberm.gaber26-Dec-12 3:26 
AnswerRe: Publish it on IIS 7 Pin
Member 117349026-Oct-17 2:38
memberMember 117349026-Oct-17 2:38 
GeneralMy vote of 4 Pin
wesley_jr4018-Dec-12 6:04
memberwesley_jr4018-Dec-12 6:04 
QuestionRemote Restful services are not working Pin
bindugadu7-Nov-12 3:18
memberbindugadu7-Nov-12 3:18 
Hello Steven,

This artical really help me for creating WCF RESTful service,
but when i host this service in the IIS. It is not working(Throwing Page not found error.)

Could you please help me on this issue.

Thanks for any kind of help.

Questionmy vote of 3 Pin
Wen Hao4-Nov-12 21:48
memberWen Hao4-Nov-12 21:48 
GeneralMy vote of 1 Pin
Dmitry Gonchar30-Oct-12 4:47
memberDmitry Gonchar30-Oct-12 4:47 
Bug[My vote of 2] Great detail; too bad it doesn't work Pin
jltik12-Oct-12 10:20
memberjltik12-Oct-12 10:20 
QuestionSorry it dose not work Pin
Member 46643481-Oct-12 13:09
memberMember 46643481-Oct-12 13:09 
QuestionPerfekt Work! Pin
Member 20393547-Aug-12 0:46
memberMember 20393547-Aug-12 0:46 
QuestionThis article is of zero use. Pin
mahakam1-Aug-12 6:06
membermahakam1-Aug-12 6:06 
AnswerRe: This article is of zero use. Pin
jim lahey21-Aug-12 4:04
memberjim lahey21-Aug-12 4:04 
AnswerRe: This article is of zero use. Pin
Derek Viljoen13-Sep-12 5:54
memberDerek Viljoen13-Sep-12 5:54 
GeneralMy vote of 5 Pin
aishar19-May-12 21:41
memberaishar19-May-12 21:41 
GeneralMy vote of 5 Pin
Rob Philpott17-Apr-12 1:16
memberRob Philpott17-Apr-12 1:16 
GeneralMy vote of 1 Pin
Member 313671823-Feb-12 18:48
memberMember 313671823-Feb-12 18:48 
QuestionCould not get this demo to work outside the debugger Pin
Member 848605113-Dec-11 10:13
memberMember 848605113-Dec-11 10:13 
AnswerRe: Could not get this demo to work outside the debugger Pin
GeertSchneider18-Jan-12 23:42
memberGeertSchneider18-Jan-12 23:42 
QuestionWCF service host cannot find any service metadata Pin
Peter Sedman15-Nov-11 2:49
memberPeter Sedman15-Nov-11 2:49 
AnswerRe: WCF service host cannot find any service metadata Pin
Member 1006555420-May-13 8:12
memberMember 1006555420-May-13 8:12 
QuestionHow do I find my port number Pin
MikeClarke3-Nov-11 12:05
memberMikeClarke3-Nov-11 12:05 
Questionservice1 has multiple contracts Pin
geordiej30-Jun-11 3:31
membergeordiej30-Jun-11 3:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.180323.1 | Last Updated 10 Mar 2011
Article Copyright 2011 by StevenHollidge
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid