Please download source code form here
1. Add a console application
2. Add the following nuget packages in you application
3. Add a windows service class "WebApi.cs" and write the following code
partial class WebApi : ServiceBase
{
public WebApi()
{
InitializeComponent();
}
private HttpSelfHostConfiguration config;
protected override void OnStart(string[] args)
{
config = new HttpSelfHostConfiguration("http://localhost:8085");
config.MapHttpAttributeRoutes();
//config.Routes.MapHttpRoute("default",
// "api/{controller}/{id}",
// new { id = RouteParameter.Optional });
config.Routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "WebApiSelfHost");
c.IncludeXmlComments(GetXmlcontetpat());
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
c.DescribeAllEnumsAsStrings();
//c.IncludeXmlComments(string.Format(@"{0}\bin\WebApiSelfHost.XML",
// System.AppDomain.CurrentDomain.BaseDirectory));
}).EnableSwaggerUi(x => x.DisableValidator());
var server = new HttpSelfHostServer(config);
var task = server.OpenAsync();
task.Wait();
}
private string GetXmlcontetpat()
{
return AppDomain.CurrentDomain.BaseDirectory + @"WebApiSelfHost.XML";
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
if (config != null)
{
config.Dispose();
}
}
internal void TestStartupAndStop(string[] args)
{
this.OnStart(args);
//Console.ReadLine();
//this.OnStop();
}
[Conditional("DEBUG_SERVICE")]
private static void DebugMode()
{
Debugger.Break();
}
}
4. write the following code on your Main function in Program.cs
static void Main(string[] args)
{
if (Environment.UserInteractive)
{
WebApi service1 = new WebApi();
service1.TestStartupAndStop(args);
}
else
{
ServiceBase[] ServicesToRun;
WebApi _selfHostService = new WebApi();
_selfHostService.ServiceName = "WebAPI_Hosted";
ServicesToRun = new ServiceBase[]
{
_selfHostService
};
ServiceBase.Run(ServicesToRun);
}
Console.WriteLine("Web API Server has started at http://localhost:8085");
Console.ReadLine();
}
Please download source code form here
1. Add a console application
2. Add the following nuget packages in you application
- Microsoft.AspNet.WebApi.Client
- Microsoft.AspNet.WebApi.Core
- Microsoft.AspNet.WebApi.SelfHost
- Microsoft.AspNet.WebApi.WebHost
- Swashbuckle
- Swashbuckle.Core
3. Add a windows service class "WebApi.cs" and write the following code
partial class WebApi : ServiceBase
{
public WebApi()
{
InitializeComponent();
}
private HttpSelfHostConfiguration config;
protected override void OnStart(string[] args)
{
config = new HttpSelfHostConfiguration("http://localhost:8085");
config.MapHttpAttributeRoutes();
//config.Routes.MapHttpRoute("default",
// "api/{controller}/{id}",
// new { id = RouteParameter.Optional });
config.Routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "WebApiSelfHost");
c.IncludeXmlComments(GetXmlcontetpat());
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
c.DescribeAllEnumsAsStrings();
//c.IncludeXmlComments(string.Format(@"{0}\bin\WebApiSelfHost.XML",
// System.AppDomain.CurrentDomain.BaseDirectory));
}).EnableSwaggerUi(x => x.DisableValidator());
var server = new HttpSelfHostServer(config);
var task = server.OpenAsync();
task.Wait();
}
private string GetXmlcontetpat()
{
return AppDomain.CurrentDomain.BaseDirectory + @"WebApiSelfHost.XML";
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
if (config != null)
{
config.Dispose();
}
}
internal void TestStartupAndStop(string[] args)
{
this.OnStart(args);
//Console.ReadLine();
//this.OnStop();
}
[Conditional("DEBUG_SERVICE")]
private static void DebugMode()
{
Debugger.Break();
}
}
4. write the following code on your Main function in Program.cs
static void Main(string[] args)
{
if (Environment.UserInteractive)
{
WebApi service1 = new WebApi();
service1.TestStartupAndStop(args);
}
else
{
ServiceBase[] ServicesToRun;
WebApi _selfHostService = new WebApi();
_selfHostService.ServiceName = "WebAPI_Hosted";
ServicesToRun = new ServiceBase[]
{
_selfHostService
};
ServiceBase.Run(ServicesToRun);
}
Console.WriteLine("Web API Server has started at http://localhost:8085");
Console.ReadLine();
}
Please download source code form here
Nice article
ReplyDelete