0

我有一个 3.1 net core web api,我必须从进程内切换到进程外托管模型,因为我的托管环境只有一个应用程序池,并且我有两个应用程序在该池中运行。由于与应用程序池相关的进程内限制,我不得不将两个应用程序切换到进程外。

Web api 在我的本地环境(从 vs studio 运行时)和托管环境中都会在启动时卡住/加载/挂起。唯一的区别是在托管环境中,一段时间后,我收到“HTTP Error 502.5 ANCM Out-Of-Process Startup Failure”类型的错误。

在做了一些研究之后,我发现大多数错误是由“Program.cs”类中的一些代码引起的。确实如此。注释掉以下代码部分后,它可以工作。

    public static IHostBuilder CreateHostBuilder(string[] args, IConfiguration configuration) =>
        Host.CreateDefaultBuilder(args)
            //.ConfigureAppConfiguration(builder =>
            //{
            //    builder.Sources.Clear();
            //    builder.AddConfiguration(configuration);
            //})
            .UseSerilog()                
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });

发生的事情是我清除了默认配置,以便我只能在“Main”方法中插入我明确定义的配置(至少这是我认为我在编写该代码时想要做的)。

            var config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json")
            .AddUserSecrets(Assembly.GetExecutingAssembly())
            .AddEnvironmentVariables()                
            .Build();

不知何故,清除默认配置会导致应用程序无法在进程外托管模型中运行,我真的很想知道原因。

4

0 回答 0