簡體   English   中英

Asp.Net Core 3.1 服務器啟動然后立即停止 - 為什么?

[英]Asp.Net Core 3.1 server starts and then stops immediately - Why?

這是我在一個更大的項目中遇到的一個問題的簡單重現。 我從一個基本的 .Net Core 3.1 CLI 應用程序開始,我只是想啟動一個 Web 服務器,監聽 localhost:42420。

這是輸出,如您所見,它啟動然后立即關閉。 為什么? 我必須在配置中添加什么才能讓它繼續運行?

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:42420
infoWeb server stopped.
: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\Users\skrym\source\repos\wstest\wstest\bin\Debug\netcoreapp3.1\
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...
info: Microsoft.Hosting.Lifetime[0]
      Waiting for the host to be disposed. Ensure all 'IHost' instances are wrapped in 'using' blocks.

注意:我故意沒有處理主機,以便我可以看到額外的日志消息。

這是我的項目文件:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
</Project>

這是所有的代碼:

using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace wstest
{
    class Program
    {
        static void Main(string[] args)
        {
            // Don't dispose this so we get all the log messages
            var host = CreateHost();
            host.Start();
            Console.WriteLine($"Web server stopped.");
        }

        private static IHost CreateHost()
        {
            var host = Host.CreateDefaultBuilder()
                .UseConsoleLifetime()
                .ConfigureWebHostDefaults(x => ConfigureWebHostBuilder(x));
            return host.Build();
        }

        private static IWebHostBuilder ConfigureWebHostBuilder(IWebHostBuilder builder)
        {
            return builder.UseStartup<SimpleStartup>()
                .UseUrls("http://localhost:42420")
                .UseContentRoot(AppContext.BaseDirectory);
        }
    }

    class SimpleStartup
    {
        public void Configure()
        {
        }
    }
}

問題在於host.Start(); . 如果你想讓主機阻塞直到關閉,你需要使用host.Run(); .

根據IHost的文檔:

啟動:同步啟動主機。

運行:運行應用程序並阻止調用線程直到主機關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM