博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在 Windows 服务中托管 ASP.NET Core
阅读量:4035 次
发布时间:2019-05-24

本文共 1533 字,大约阅读时间需要 5 分钟。

概述

众所周知,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

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
(); services.AddHostedService
(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup
(); }); }

4、发布项目

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

执行

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

源码下载

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

tree/master/WebApplication24

转载地址:http://wzudi.baihongyu.com/

你可能感兴趣的文章
grub学习(2) 加载内核
查看>>
grub学习(3) 加载initrd
查看>>
grub学习(4) 启动linux内核
查看>>
编译链接学习笔记1
查看>>
编译链接学习笔记2
查看>>
x86_64汇编语言
查看>>
慢慢欣赏linux kbuild的一些技巧
查看>>
慢慢欣赏linux kbuild如何编译c和汇编
查看>>
C对象化
查看>>
慢慢欣赏linux 生成内核镜像
查看>>
慢慢欣赏linux 内核反汇编分析
查看>>
慢慢欣赏linux 内核的重定位
查看>>
慢慢欣赏linux elf文件
查看>>
linux内核学习(3)建立页式内存映射
查看>>
linux内核学习(2)建立段式内存映射
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>