• 在 Windows 服务中托管 ASP.NET Core


    众所周知,ASP.NET Core采用了和传统ASP.NET不同的托管和HTTP处理方式,即把服务器和托管环境完全解耦。
    ASP.NET Core内置了两个HTTP服务器实现,一个是基于libuv实现的Kestrel(支持跨平台),一个是基于Windows HTTP Server API实现的WebListener(仅支持Windows)。
    而托管环境可以和服务器不相关,一般情况是自托管,或者托管到IIS/IISExpress中(此处的IIS仅作为反向代理把请求转发给所使用的服务器实现)。
    因此,打算以Windows Service这种比较传统的方式来部署ASP.NET Core的Web应用也是可行的(本质还是自托管,只是启动进程并非控制台程序,而是一个Windows Service)。这不,微软就很贴心的提供了一个Nuget来支持:Microsoft.AspNetCore.Hosting.WindowsServices,

    不使用 IIS 时,可以在 Windows 上将 ASP.NET Core 应用作为 Windows 服务进行托管。 作为 Windows 服务进行托管时,应用将在服务器重新启动后自动启动。

    系统必备

    • ASP.NET .NET Core SDK 2.1 或更高版本

    • PowerShell 6.2 或更高版本

    步骤

    1、新建 ASP.NET Core 项目

    2、引入Nuget包 Microsoft.AspNetCore.Hosting.WindowsServices

    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="3.0.0" />

    3、Program修改为如下:

    public class Program    {public static void Main(string[] args)        {            CreateHostBuilder(args).Build().Run();        }
    public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { services.AddHostedService<ServiceA>(); services.AddHostedService<ServiceB>(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }

    4、发布项目

    5、管理员身份进入cmd  切换到项目目录下

    执行

    sc create MyService binPath="D:svcMvcService.exe"然后手动到服务里面启动服务或者 sc start MyService

     

     

    https://github.com/conanl5566/dotnet-core-Example/

    tree/master/WebApplication24

     

  • 相关阅读:
    centos7 /etc/rc.local需要chmod +x /etc/rc.d/rc.local
    epel源
    yum 源
    socket
    CentOS 7使用systemctl如何补全服务名称
    keepalive脑裂的处理,从节点发现访问的虚拟IP就报警,同时尝试发送内容到主节点服务器关闭keepalive和nginx,或者关机
    nginx的 keepalive_timeout参数是一个请求完成之后还要保持连
    kickstart安装步骤
    kickstart
    因客户机IP与服务器IP不在同一网段导致无盘客户机开机卡tftp,提示:PXE-E11: ARP timeout
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/11993819.html
Copyright © 2020-2023  润新知