使用 UNIX 套接字升级到 ASP.NET Core 2.1 的问题

Issue upgrading to ASP.NET Core 2.1 using UNIX Sockets

将应用程序升级到 ASP.NET Core 2.1 时,UNIX 套接字不再工作,应用程序在启动时抛出未处理的异常:

System.ArgumentException: Only ListenType.IPEndPoint is supported.

如何使用 ASP.NET Core 2.1 在 UNIX 套接字上监听?

在 ASP.NET Core 2.1 中,Kestrel 服务器切换到 "Sockets" 传输实现,它仅支持 IP 套接字。

为了使用 UNIX 套接字,需要使用 "LibUV" 传输实现。

为此,将启动代码更改为 select LibUV 传输:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseLibuv()
        .UseUrls("http://unix:/var/run/myapi.sock")
        .UseStartup<Startup>();

然后更改 csproj 文件以引用 Microsoft.AspNetCore.All 元数据包而不是 .App 元数据包:

<ItemGroup>
  <!-- Change to ".All" if this was ".App" -->
  <PackageReference Include="Microsoft.AspNetCore.All" />
</ItemGroup>