<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Vahid Taslimi's Web log (وبلاگ وحید تسلیمی) - WEBAPI</title><link>http://old.taslimi.me:80/Tags/WEBAPI</link><description>Vahid Taslimi's Web log (وبلاگ وحید تسلیمی) - WEBAPI</description><item><title>Using Unity with ASP.NET WEB API Controller</title><link>http://old.taslimi.me:80/using-unity-with-asp.net-web-api-controller</link><description>&lt;p&gt;Support for Ioc containers is backed into ASP.NET WEB API and uses the service locator pattern dependency resolver by default.&lt;/p&gt; &lt;p&gt;the default service locator implements the &lt;strong&gt;IDependencyResolver&lt;/strong&gt; interface. This interface has two methods. &lt;ul&gt; &lt;li&gt;&lt;strong&gt;GetService&lt;/strong&gt;: Creates one instance of a specified type.  &lt;li&gt;&lt;strong&gt;GetServices&lt;/strong&gt;: Create a collection of objects of a specified type.&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;in order to use Microsoft Unity framework with ASP.NET WEB API we need to map these to methods to Resolve and ResolveAll methods of Utity. to do so first add the following method to your global.asax.cs or your bootstrapper class&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;Public &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; RegisterDependencies(IUnityContainer container)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            GlobalConfiguration.Configuration.ServiceResolver.SetResolver(&lt;/pre&gt;&lt;pre class="alt"&gt;                t =&amp;gt;&lt;/pre&gt;&lt;pre&gt;                {&lt;/pre&gt;&lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;                    {&lt;/pre&gt;&lt;pre class="alt"&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; container.Resolve(t);&lt;/pre&gt;&lt;pre&gt;                    }&lt;/pre&gt;&lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (ResolutionFailedException)&lt;/pre&gt;&lt;pre&gt;                    {&lt;/pre&gt;&lt;pre class="alt"&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;                    }&lt;/pre&gt;&lt;pre class="alt"&gt;                },&lt;/pre&gt;&lt;pre&gt;                t =&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                    {&lt;/pre&gt;&lt;pre&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; container.ResolveAll(t);&lt;/pre&gt;&lt;pre class="alt"&gt;                    }&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (ResolutionFailedException)&lt;/pre&gt;&lt;pre class="alt"&gt;                    {&lt;/pre&gt;&lt;pre&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;();&lt;/pre&gt;&lt;pre class="alt"&gt;                    }&lt;/pre&gt;&lt;pre&gt;                });&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;


&lt;p&gt;this is the method which maps the GetService and GetServices methods to Resolve and ResolveAll methods.&lt;/p&gt;
&lt;p&gt;the next and final step is to plug in this method to the framework. to do so you just need to call this method from the method in which you construct your unity container. in my case I create a separate method to take care of this:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; IUnityContainer BuildUnityContainer()&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            var container = &lt;span class="kwrd"&gt;new&lt;/span&gt; UnityContainer();&lt;/pre&gt;&lt;pre&gt;            RegisterMappers(container);&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;RegisterDependencies(container);&lt;/font&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;pre&gt;            container.RegisterControllers();&lt;/pre&gt;&lt;pre class="alt"&gt;            DependencyResolver.SetResolver(&lt;span class="kwrd"&gt;new&lt;/span&gt; UnityDependencyResolver(container));&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; container;&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;and you are done. you should be able to use your Ioc container with ASP.NET WEB API now.&lt;/p&gt;</description><pubDate>Sun, 15 Apr 2012 00:39:00 GMT</pubDate><guid isPermaLink="true">http://old.taslimi.me:80/using-unity-with-asp.net-web-api-controller</guid></item><item><title>Hosting ASP.NET WEB API</title><link>http://old.taslimi.me:80/hosting-asp.net-web-api</link><description>&lt;p&gt;You may want to host you HTTP Service i.e. ASP.NET WEB API in a console app. well it can be easily done.&lt;/p&gt; &lt;p&gt;to show this lets create a console app and add reference to the following assemblies:&lt;/p&gt;&lt;pre&gt;System.Web&lt;/pre&gt;&lt;pre&gt;System.Web.Http&lt;/pre&gt;&lt;pre&gt;System.Web.Http.Common&lt;/pre&gt;&lt;pre&gt;System.Web.Http.SelfHost&lt;/pre&gt;&lt;pre&gt;System.Web.Http.WebHost&lt;/pre&gt;&lt;pre&gt;System.Net;&lt;/pre&gt;&lt;pre&gt;System.Net.Http.Formatting;&lt;/pre&gt;&lt;pre&gt;System.Net.Http.Headers;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;this step is optional but for just touching on Json.net I am going to install Json.net using Nuget. &lt;/p&gt;&lt;pre&gt;&lt;a href="http://www.taslimi.me/Media/Default/Windows-Live-Writer/Hosting-ASP.NET-WEB-API_13135/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.taslimi.me/Media/Default/Windows-Live-Writer/Hosting-ASP.NET-WEB-API_13135/image_thumb.png" width="605" height="110"&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now lets add a CarInfo class to return it in our controller&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CarInfo&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DateTime releaseDate = DateTime.UtcNow;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; availableColors = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;  &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;          {         &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;          { 1, &lt;span class="str"&gt;"yellow"&lt;/span&gt;},   &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;          { 2, &lt;span class="str"&gt;"red"&lt;/span&gt; },   &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;          { 3, &lt;span class="str"&gt;"black"&lt;/span&gt; }, &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;          };&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Name&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            get&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;"BMW X6"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; DateTime ReleaseDate { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; releaseDate; } }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; IDictionary&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; AvailableColors { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; availableColors; } }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And let’s create our home controller as bellow:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; HomeController : ApiController&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="rem"&gt;// GET /api/&amp;lt;controller&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; CarInfo Get()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; CarInfo();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;as you see our controller has got just one method which responds to the Get request.&lt;/p&gt;
&lt;p&gt;we also need a little helper class to integrate JSon.net to our application. please note as mentioned above using Json.net is optional.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; JsonNetFormatter : MediaTypeFormatter&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; JsonSerializerSettings jsonSerializerSettings;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; JsonNetFormatter(JsonSerializerSettings jsonSerializerSettings)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.jsonSerializerSettings = jsonSerializerSettings ?? &lt;span class="kwrd"&gt;new&lt;/span&gt; JsonSerializerSettings();&lt;/pre&gt;&lt;pre&gt;            SupportedMediaTypes.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; MediaTypeHeaderValue(&lt;span class="str"&gt;"application/json"&lt;/span&gt;));&lt;/pre&gt;&lt;pre class="alt"&gt;            Encoding = &lt;span class="kwrd"&gt;new&lt;/span&gt; UTF8Encoding(&lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanReadType(Type type)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; type != &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(IKeyValueModel);&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanWriteType(Type type)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; Task&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt; OnReadFromStreamAsync(Type type, Stream stream, &lt;/pre&gt;&lt;pre&gt;HttpContentHeaders contentHeaders, FormatterContext formatterContext)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            var serializer = JsonSerializer.Create(&lt;span class="kwrd"&gt;this&lt;/span&gt;.jsonSerializerSettings);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; Task.Factory.StartNew(() =&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            {&lt;/pre&gt;&lt;pre&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var streamReader = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(stream, Encoding))&lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (var jsonTextReader = &lt;span class="kwrd"&gt;new&lt;/span&gt; JsonTextReader(streamReader))&lt;/pre&gt;&lt;pre class="alt"&gt;                    {&lt;/pre&gt;&lt;pre&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; serializer.Deserialize(jsonTextReader, type);&lt;/pre&gt;&lt;pre class="alt"&gt;                    }&lt;/pre&gt;&lt;pre&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;            });&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; Task OnWriteToStreamAsync(Type type, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;, Stream stream, &lt;/pre&gt;&lt;pre&gt;HttpContentHeaders contentHeaders, FormatterContext formatterContext, TransportContext transportContext)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            var serializer = JsonSerializer.Create(&lt;span class="kwrd"&gt;this&lt;/span&gt;.jsonSerializerSettings);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; Task.Factory.StartNew(() =&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            {&lt;/pre&gt;&lt;pre&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var jsonTextWriter = &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;new&lt;/span&gt; JsonTextWriter(&lt;span class="kwrd"&gt;new&lt;/span&gt; StreamWriter(stream, Encoding)) { CloseOutput = &lt;span class="kwrd"&gt;false&lt;/span&gt; })&lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    serializer.Serialize(jsonTextWriter, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;                    jsonTextWriter.Flush();&lt;/pre&gt;&lt;pre&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;            });&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;    }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;


&lt;p&gt;ok it’s time to create actual host to host our service. you just need to add few lines of code to the main method of the program&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// Set up server configuration    &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            HttpSelfHostConfiguration config = &lt;span class="kwrd"&gt;new&lt;/span&gt; HttpSelfHostConfiguration(&lt;span class="str"&gt;"http://localhost:8081"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;            config.Routes.MapHttpRoute(&lt;span class="str"&gt;"Default"&lt;/span&gt;, &lt;span class="str"&gt;"{controller}"&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; { controller = &lt;span class="str"&gt;"Home"&lt;/span&gt; });&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;           &lt;/pre&gt;&lt;pre&gt;            JsonSerializerSettings serializerSettings = &lt;span class="kwrd"&gt;new&lt;/span&gt; JsonSerializerSettings();&lt;/pre&gt;&lt;pre class="alt"&gt;            serializerSettings.Converters.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; IsoDateTimeConverter());&lt;/pre&gt;&lt;pre&gt;            config.Formatters[0] = &lt;span class="kwrd"&gt;new&lt;/span&gt; JsonNetFormatter(serializerSettings);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;// Create server   &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            var server = &lt;span class="kwrd"&gt;new&lt;/span&gt; HttpSelfHostServer(config);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// Start listening   &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            server.OpenAsync().Wait();&lt;/pre&gt;&lt;pre class="alt"&gt;            Console.ReadLine();&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
to test the application open Fiddler and create a request as below:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.taslimi.me/Media/Default/Windows-Live-Writer/Hosting-ASP.NET-WEB-API_13135/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.taslimi.me/Media/Default/Windows-Live-Writer/Hosting-ASP.NET-WEB-API_13135/image_thumb_1.png" width="813" height="392"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;basically you need to set the address to &lt;a title="http://localhost:8081/Home" href="http://localhost:8081/Home"&gt;http://localhost:8081/Home&lt;/a&gt; and content-type to Content-Type: application/json; charset=utf-8. once you create the request click on execute and you should be getting the following response back&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.taslimi.me/Media/Default/Windows-Live-Writer/Hosting-ASP.NET-WEB-API_13135/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.taslimi.me/Media/Default/Windows-Live-Writer/Hosting-ASP.NET-WEB-API_13135/image_thumb_2.png" width="815" height="461"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;as you see we get Json representation of the CarInfo object.&lt;/p&gt;
&lt;p&gt;it was quit simple, wasn’t it?&lt;/p&gt;</description><pubDate>Sun, 18 Mar 2012 11:26:50 GMT</pubDate><guid isPermaLink="true">http://old.taslimi.me:80/hosting-asp.net-web-api</guid></item><item><title>Make a call to a JSON/XML ASP.Net WEB API from server code</title><link>http://old.taslimi.me:80/make-a-call-to-a-json-xml-asp.net-web-api-from-server-code</link><description>&lt;p&gt;There is plenty of articles out there on how to make a ajax call to a asp.net web api service. but what if you want to make a call to the same service from a server code? this can happen because of various reasons like when you want to offer a service and use IP validation.&lt;/p&gt;
&lt;p&gt;anyway this is quite simple to call a service exposed by ASP.net WEB API either using JSON or XML. and it is like calling a WCF or XML web service from a server side code without adding a reference to the service.&lt;/p&gt;
&lt;p&gt;Lets assume that our ASP.net WEB API provide a service to and and return flights using a given FlightSearchRequest object.&lt;/p&gt;
&lt;h4&gt;FlightSearchRequest&lt;/h4&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; FlightSearchRequest&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; DepartureAirportCode { get; set; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ArrivalAirportCode { get; set; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;h4&gt;WEB API Method&lt;/h4&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;        [HttpPost]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; IEnumerable&amp;lt;Flight&amp;gt; GetFlights(FlightSearchRequest flightRequest)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Flight&amp;gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; Flight { Id=1, AirlineCode = &lt;span class="str"&gt;"EK"&lt;/span&gt;, Price = 350 }, &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; Flight { Id=2, AirlineCode = &lt;span class="str"&gt;"LX"&lt;/span&gt;, Price = 280 },&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt;                };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;and here is the code to call the service:&lt;/p&gt;
&lt;h4&gt;Using JSON&lt;/h4&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;            HttpWebRequest request;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;            HttpWebResponse hwResponse;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;"http://127.0.0.1:26030/api/MyAPI/GetFlights"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; responseBody = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; requestBody = &lt;/pre&gt;
&lt;pre class="alt"&gt;			&lt;span class="str"&gt;"[{\"DepartureAirportCode\":\"MEL\",\"ArrivalAirportCode\":\"LHR\"}]"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;           &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;                &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] byteData = UTF8Encoding.UTF8.GetBytes(requestBody.ToString());&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt;                request = (HttpWebRequest)HttpWebRequest.Create(url);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt;                request.ContentType = &lt;span class="str"&gt;"application/json;charset=utf-8"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt;                request.UserAgent = &lt;/pre&gt;
&lt;pre&gt;	&lt;span class="str"&gt;"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BOIE9;ENUS)"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt;                request.Accept = &lt;span class="str"&gt;"*/*"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt;                request.Method = &lt;span class="str"&gt;"POST"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt;                request.ContentLength = byteData.Length;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt;                &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt;                &lt;span class="rem"&gt;// Write data &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (Stream postStream = request.GetRequestStream())&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt;                    postStream.Write(byteData, 0, byteData.Length);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt;                }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt;                &lt;span class="rem"&gt;// Get response &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (HttpWebResponse response = request.GetResponse() &lt;span class="kwrd"&gt;as&lt;/span&gt; HttpWebResponse)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt;                    &lt;span class="rem"&gt;// Get the response stream &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt;                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (var reader = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(response.GetResponseStream()))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt;                    {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt;                        responseBody = reader.ReadToEnd();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt;                    }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt;                }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;to make the same call using XML you just need to change the ContentType to application/xml and also change the request body to an xml format&lt;/p&gt;
&lt;h4&gt;Using XML&lt;/h4&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;            HttpWebRequest request;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;            HttpWebResponse hwResponse;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; url = &lt;span class="str"&gt;"http://127.0.0.1:26030/api/MyAPI/GetFlights"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; responseBody = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; requestBody = &lt;/pre&gt;
&lt;pre class="alt"&gt;				&lt;span class="str"&gt;"&amp;lt;Product&amp;gt;&amp;lt;Id&amp;gt;6&amp;lt;/Id&amp;gt;&amp;lt;Name&amp;gt;Jackson&amp;lt;/Name&amp;gt;&amp;lt;/Product&amp;gt;"&lt;/span&gt;;         &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;                &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] byteData = UTF8Encoding.UTF8.GetBytes(requestBody.ToString());&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;                request = (HttpWebRequest)HttpWebRequest.Create(url);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt;                request.ContentType = &lt;span class="str"&gt;"application/xml;charset=utf-8"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt;                request.UserAgent = &lt;/pre&gt;
&lt;pre class="alt"&gt;	&lt;span class="str"&gt;"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BOIE9;ENUS)"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt;                request.Accept = &lt;span class="str"&gt;"*/*"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt;                request.Method = &lt;span class="str"&gt;"POST"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt;                request.ContentLength = byteData.Length;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt;                &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt;                &lt;span class="rem"&gt;// Write data &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (Stream postStream = request.GetRequestStream())&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt;                    postStream.Write(byteData, 0, byteData.Length);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt;                }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt;                &lt;span class="rem"&gt;// Get response &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (HttpWebResponse response = request.GetResponse() &lt;span class="kwrd"&gt;as&lt;/span&gt; HttpWebResponse)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt;                    &lt;span class="rem"&gt;// Get the response stream &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt;                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (var reader = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(response.GetResponseStream()))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt;                    {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt;                        responseBody = reader.ReadToEnd();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt;                    }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt;                }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;now the more I play with WEP API the more I like it &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.taslimi.me/Media/Default/Windows-Live-Writer/d8d1b66746e0_B535/wlEmoticon-smile_2.png"&gt;&lt;/p&gt;</description><pubDate>Mon, 12 Mar 2012 02:21:54 GMT</pubDate><guid isPermaLink="true">http://old.taslimi.me:80/make-a-call-to-a-json-xml-asp.net-web-api-from-server-code</guid></item><item><title>ASP.Net WEB API VS WCF Service</title><link>http://old.taslimi.me:80/asp.net-web-api-vs-wcf-service</link><description>&lt;p&gt;Well as soon as i heard and read about asp.net web api, i was very excited about it but in between i had that mmmmm moment. i was like, this is great but what about WCF? I am not going to create any WCF services anymore?  &lt;p&gt;so I had think again about it but could not find any concrete answer as these two are overlapping in many areas. so I had to do a bit more R&amp;amp;D about the differences and I came across &lt;a href="http://mattmilner.com/Milner/Blog/post/2012/02/28/WebAPI-or-WCF.aspx" target="_blank"&gt;this blog post from Matt Milner&lt;/a&gt;. &lt;p&gt;the post has got very fair point on when to use WCF services and when to use ASP.net web api. but in nutshell I think for most of our feature service development for web –over http-, we are going to use ASP.net web api and it kind of make sense as it’s much easier to setup and use. &lt;p&gt;here is blog post address: &lt;p&gt;&lt;a href="http://mattmilner.com/Milner/Blog/post/2012/02/28/WebAPI-or-WCF.aspx"&gt;http://mattmilner.com/Milner/Blog/post/2012/02/28/WebAPI-or-WCF.aspx&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 11 Mar 2012 12:00:42 GMT</pubDate><guid isPermaLink="true">http://old.taslimi.me:80/asp.net-web-api-vs-wcf-service</guid></item></channel></rss>