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

爱谁谁
发布: 2025-09-18 08:44:02
原创
651人浏览过

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

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

  1. 安装Nuget包

    我们需要安装以下Nuget包:

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

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

  2. 创建Topshelf所需的类

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

    Bootstrap
    登录后复制
    类来实现
    ServiceControl
    登录后复制
    接口。

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

    AI卡通生成器
    AI卡通生成器

    免费在线AI卡通图片生成器 | 一键将图片或文本转换成精美卡通形象

    AI卡通生成器51
    查看详情 AI卡通生成器
    /// <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;
            }
        }
    }
    登录后复制
  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
    登录后复制
    ,可以得到如下图所示的内容:

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

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

以上就是通过TopShelf将OwinSelfHost自宿主打包成服务的详细内容,更多请关注php中文网其它相关文章!

Windows激活工具
Windows激活工具

Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号