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

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

////// OWIN host/// public class Bootstrap : ServiceControl{ private IDisposable webApp; public string Address { get; set; } public bool Start(HostControl hostControl) { try { webApp = WebApp.Start(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自宿主打包成服务的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/154743.html
微信扫一扫
支付宝扫一扫