Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 是否可以在现有的ASPNET.Core web项目中调用和/或使用辅助服务?_Asp.net Core_.net Core_Backgroundworker - Fatal编程技术网

Asp.net core 是否可以在现有的ASPNET.Core web项目中调用和/或使用辅助服务?

Asp.net core 是否可以在现有的ASPNET.Core web项目中调用和/或使用辅助服务?,asp.net-core,.net-core,backgroundworker,Asp.net Core,.net Core,Backgroundworker,我一直在阅读和学习.NETCore3.0中提供的新Worker服务功能。我一直在使用Microsoft的以下链接: 我不明白的是,这些工作者服务概念是否可以引入到现有的ASPNET Web项目中,比如Razor Pages网站?或者您必须创建一个新项目,然后使用主机操作系统为此提供的任何机制将该项目部署为服务?是的,您可以在ASP.NET核心应用程序中托管任意数量的托管服务(IHostedService)。对于版本3,ASP.NET Core使用通用主机(host.CreateDefaultBu

我一直在阅读和学习.NETCore3.0中提供的新Worker服务功能。我一直在使用Microsoft的以下链接:


我不明白的是,这些工作者服务概念是否可以引入到现有的ASPNET Web项目中,比如Razor Pages网站?或者您必须创建一个新项目,然后使用主机操作系统为此提供的任何机制将该项目部署为服务?

是的,您可以在ASP.NET核心应用程序中托管任意数量的托管服务(
IHostedService
)。对于版本3,ASP.NET Core使用通用主机(
host.CreateDefaultBuilder
),它是在应用程序启动时承载这些托管服务的框架。事实上,ASP.NET核心web应用程序本身就是一个
IHostedService

要向ASP.NET核心应用程序添加其他托管服务,只需在服务集合中注册其他托管服务,例如,在启动的
ConfigureServices
中:

services.AddHostedService<MyHostedService>();
services.AddHostedService();
当应用程序运行时,该服务将与ASP.NET核心web服务器一起启动

文档中提到的Worker SDK实际上是用于ASP.NET核心应用程序的Web SDK的子集
Microsoft.NET.Sdk.Worker
基本上是
Microsoft.NET.Sdk.Web
而没有特定于Web的东西,比如Razor编译和
wwwroot
文件夹的东西。它基本上为
appsettings.json
设置了自动文件globbing,并做了一些核心
Microsoft.NET.Sdk
没有的其他有用的事情


这最终意味着,当您使用Web SDK时,您已经拥有Worker SDK提供的所有功能。因此,您不需要指定Worker SDK来承载额外的后台服务。

非常感谢您,poke。我将问另一个问题,关于如何使用WebSDK启动后台进程