gpt4 book ai didi

asp.net-core - 在 .Net Core Worker Service 中托管 Web API - 无法引用 IWebHostEnvironment

转载 作者:行者123 更新时间:2023-12-03 16:12:36 31 4
gpt4 key购买 nike

我正在创建一个 .NET Core Worker Service,并希望为该服务公开 ASP.Net Core Web API。我正在使用 .NET Core 3.0。
最初,我的计划是用 IWebHostBuilder 替换 IHostBuilder 并添加一个 Startup 类,就像常规的 Asp.Net Core Web 应用程序一样(不过,这可能过于简化了)。

我的计划是简单地尝试更换

public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}



public static IWebHostBuilder CreateHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
}).UseStartup<Startup>();
}

这可能根本行不通,但至少它是一个起点......
阻止我尝试这种方法的是我无法实现我的 Startup上课是因为 IWebHostEnvironment不可用。

这是我的

<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UserSecretsId>dotnet-WorkerServices-0E977A2C-F0C8-49E7-B00A-5EB01B99FBEB</UserSecretsId>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" />
</ItemGroup>

据我所知, IWebHostEnvironment应该在 Microsoft.Extensions.Hosting.Abstractions nuget 包,但引用它似乎不起作用。

有没有人有任何想法?
-谢谢!

最佳答案

向 API 项目添加服务要容易得多。这只是额外的一行。

如果您不能或不想重新开始,请手动更改您的项目。忘记 IWebHostBuilder ,它现在已过时或已弃用或什么的。

我可以在这里发布一些片段,但要容易得多:创建一个临时 API 项目,复制 Program 和 Startup 类(但保留您的命名空间),然后在 Startup 中:

public void ConfigureServices(IServiceCollection services)
{
services.AddHostedService<Worker>(); // the worker will run
services.AddControllers();
}

关于asp.net-core - 在 .Net Core Worker Service 中托管 Web API - 无法引用 IWebHostEnvironment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58274763/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com