基于当前文章进行代码配置后可开始进行本文章学习
用Owin Host实现脱离IIS跑Web API单元测试
基于上述程序集开始编码
安装Nuget包 Topshelf
image.png新建Topshelf 所需的类
image.pngBootstrap.cs 是对Topshelf 发布的windows服务的开始[Start]和结束[Stop]接口所要做的事情
/// <summary>
/// OWIN host
/// </summary>
public class Bootstrap : ServiceControl
{
private IDisposable webApp;
public string Address { get; set; }
public bool Start(HostControl hostControl)
{
try
{
webApp = WebApp.Start<Startup>(Address);
return true;
}
catch (Exception ex)
{
Console.WriteLine("Topshelf starting occured errors.", ex);
return false;
}
}
public bool Stop(HostControl hostControl)
{
try
{
webApp?.Dispose();
return true;
}
catch (Exception ex)
{
Console.WriteLine($"Topshelf stopping occured errors.", ex);
return false;
}
}
}
Program.cs
项目程序主文件,通过TopShelf将应用打包成windows服务的方法,
class Program
{
static void Main(string[] args)
{
HostFactory.Run(x =>
{
x.RunAsLocalSystem();
x.SetServiceName("HangfireSettings.Instance.ServiceName");
x.SetDisplayName("HangfireSettings.Instance.ServiceDisplayName");
x.SetDescription("HangfireSettings.Instance.ServiceDescription");
x.Service(() => new Bootstrap { Address = "http://localhost:9005/" });
});
Console.Read();
}
}
程序运行后,只需要在地址栏输入 http://localhost:9005/,就可以访问网站
输入http://localhost:9005/blogposts/1/comments,可以得到如下图所示内容
上图所示内容就相当于是通过OwinSelfHost自宿主打包后的运行方法,我们不需要新建一个web项目,只需要通过控制台程序,安装OWIN自宿主包,对各内容进行配置后,启动程序,即可通过地址栏访问网络服务请求。
更近一步的是将当前控制台打包成Topshelf服务,这样就可以保证后台运行。
网友评论