让我们来学习如何使用owin host实现脱离iis运行web api的单元测试,并将owinselfhost自宿主打包成服务。以下是详细步骤和代码示例:
首先,我们需要安装必要的Nuget包来支持Owin自宿主和Topshelf服务。让我们从安装开始:
安装Nuget包:
我们需要安装以下Nuget包:

创建Topshelf所需的类:
我们需要创建一个类来处理服务的启动和停止。这里我们使用
Bootstrap
ServiceControl

/// <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 occurred errors.", ex);
return false;
}
}
public bool Stop(HostControl hostControl)
{
try
{
webApp?.Dispose();
return true;
}
catch (Exception ex)
{
Console.WriteLine($"Topshelf stopping occurred errors.", ex);
return false;
}
}
}创建主程序入口:
我们需要一个主程序来运行Topshelf服务。这里我们使用
Program
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服务,这样就可以保证后台运行。
以上就是通过TopShelf将OwinSelfHost自宿主打包成服务的详细内容,更多请关注php中文网其它相关文章!
Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号