【发布时间】:2019-10-07 17:53:45
【问题描述】:
我正在创建一个 .NET Core Worker 服务,并希望为该服务公开 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 包中,但引用它似乎不起作用。
有人有什么想法吗? -谢谢!
【问题讨论】:
-
如果您的目标是 dotnet core 3.0,您应该完全删除
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />和<PackageReference Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Version="2.2.0" />行。推荐阅读Migrate from ASP.NET Core 2.2 to 3.0