信息发布→ 登录 注册 退出

通过TopShelf将OwinSelfHost自宿主打包成服务

发布时间:2025-09-18

点击量:

让我们来学习如何使用owin host实现脱离iis运行web api的单元测试,并将owinselfhost自宿主打包成服务。以下是详细步骤和代码示例:

首先,我们需要安装必要的Nuget包来支持Owin自宿主和Topshelf服务。让我们从安装开始:

  1. 安装Nuget包

    我们需要安装以下Nuget包:

    • Microsoft.Owin.Host.HttpListener
    • Microsoft.Owin.Hosting
    • Topshelf

  2. 创建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;
            }
        }
    }
  3. 创建主程序入口

    我们需要一个主程序来运行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();
        }
    }
  4. 运行程序

    程序运行后,只需在浏览器地址栏输入

    http://localhost:9005/
    ,即可访问网站。如果输入
    http://localhost:9005/blogposts/1/comments
    ,可以得到如下图所示的内容:

通过上述步骤,我们成功地使用OwinSelfHost自宿主打包了服务,不需要新建一个Web项目,只需通过控制台程序,安装OWIN自宿主包,对各内容进行配置后,启动程序,即可通过地址栏访问网络服务请求。进一步地,我们将当前控制台打包成Topshelf服务,这样就可以保证后台运行。

标签:# bootstrap  # 浏览器  # app  # iis  # ai  # win  # web项目  # red  # 接口  # http  # microsoft  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!