We have seen earlier creating WEBAPI selecting
WEBAPI project type, also we can create the WEBAPI using Console application.
Soon after listening the word console application we
will get a doubt that how the URL of the service is exposed with a generated
Executable file (.EXE).
Here we are going to host
the application as a Self-Hosting
1. Create new project
2. Under Visual C# select Console
application as a project type.
3. Click
on Tools -> NuGet Package Manager - > Package Manager Console.
Install
OwinselfHost package for self hosting (internet connection mandatory)
PM> Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
4. If
the API is also used to consume as a cross origin, we should install CORS packages (internet connection
mandatory)
PM> Install-Package Microsoft.AspNet.WebApi.Cors
5. Add
new class to the project and name it to Startup.cs
[Name should be same for self-Hosting]
Place the below code in
Startup.cs
using System;
using Owin;
using System.Web.Http;
using System.Net.Http;
namespace firstMicroService
{
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration CONFIG = new HttpConfiguration();
CONFIG.EnableCors();
CONFIG.Routes.MapHttpRoute(
name: "createUserApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(CONFIG);
}
}
}
6. Create
new class with [EmployeeController.cs] which inherits
from ApiController
Place the code as shown
below.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Cors;
namespace firstMicroService
{
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Salary { get; set; }
}
[EnableCors(origins:"*", headers:"*", methods:"*")]
public class EmployeeController : ApiController
{
Employee[] employees = new Employee[]
{
new Employee{Id=0,Name="Morris",Salary="151110"},
new Employee{Id=1,Name="John", Salary="120000"},
new Employee{Id=2,Name="Chris",Salary="140000"},
new Employee{Id=3,Name="Siraj", Salary="90000"}
};
public IEnumerable<Employee> Get()
{
return employees.ToList();
}
public Employee Get(int Id)
{
try
{
return employees[Id];
}
catch (Exception)
{
return new Employee();
}
}
}
}
7. Open
Program.cs file and replace with below code.
using Microsoft.Owin.Hosting;
using System;
namespace firstMicroService
{
class Program
{
static void Main(string[] args)
{
string domainAddress = "Http://20.201.36.49/";
using (WebApp.Start(url: domainAddress))
{
Console.WriteLine("Service Hosted " + domainAddress);
System.Threading.Thread.Sleep(-1);
}
}
}
}
9. Run
the application and keep the console open.
10. Service
is written only for GET method, to test the service,
{given Domain address}/{api}/{Given
controllername}/{optional id}
In my case am testing
the service with POSTMAN REST Client,
http://20.201.36.49/api/Employee/1
Testing Service.