入口点退出时没有构建IHost。

4

我尝试运行集成测试,但是遇到了这个错误:

System.InvalidOperationException: 入口点退出而没有构建 IHost。 at Microsoft.Extensions.Hosting.HostFactoryResolver.HostingListener.CreateHost() at Microsoft.Extensions.Hosting.HostFactoryResolver.<>c__DisplayClass10_0.b__0(String[] args) at Microsoft.AspNetCore.Mvc.Testing.DeferredHostBuilder.Build() at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.CreateHost(IHostBuilder builder) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.ConfigureHostBuilder(IHostBuilder hostBuilder) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.EnsureServer() at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.CreateDefaultClient(DelegatingHandler[] handlers) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.CreateDefaultClient(Uri baseAddress, DelegatingHandler[] handlers) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory1.CreateClient(WebApplicationFactoryClientOptions options) at Ptco.System.IntegrationTests.Infrastructure.IntegrationTestsWebFactory.CreteManagedClient() in C:\Users\nemes\Documents\GitHub\ptco.app\System\Ptco.System.IntegrationTests\Infrastructure\IntegrationTestsWebFactory.cs:line 249

第 249 行是:

private HttpClient CreteManagedClient() =>
        CreateClient(new WebApplicationFactoryClientOptions
        {
            BaseAddress = new Uri(_configuration.GetValue<string>("IntegrationServerBaseUri"))
        });

这被称为这样

     public IntegrationTestsWebFactory()
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
        {
            _configurationPath = Path.Join(AppDomain.CurrentDomain.BaseDirectory, "appsettings.json");
            _configuration = BuildConfiguration();
            ManagedHttpClient = CreteManagedClient();
        }

我该如何解决这个错误?


您正在向配置文件(IntegrationServerBaseUri)中的URL发送请求,但服务器拒绝连接。服务器拒绝连接有很多原因。请确保请求具有正确的格式和可能需要的任何凭据。您需要阅读服务器文档以验证请求格式是否正确。 - jdweng
1个回答

3

1
这个错误不是来自 Serilog 的,对吧? - Victorio Berra
抱歉,目前我不确定。 - maxisam
1
所以我找到了更多信息。希望这能帮助到某些人。错误“入口点在没有构建IHost的情况下退出”通常发生在宿主由于崩溃而无法启动的情况下。类似的错误是“服务器尚未启动或未配置任何Web应用程序。”真正的错误可能在日志中,也可能不在其中。这与Serilog有关,但不总是如此。这可能发生在并行运行的集成测试期间,因为像Github问题解释的那样,Serilog CreateBootstrapLogger() 是一个有状态的操作,在启动期间做了一些棘手的事情。 - Victorio Berra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接