代码之家  ›  专栏  ›  技术社区  ›  Martin Ullrich

使用Unix套接字升级到ASP.NET Core 2.1时出现问题

  •  1
  • Martin Ullrich  · 技术社区  · 6 年前

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

    System.ArgumentException:仅支持ListenType.IPendPoint。

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Martin Ullrich    6 年前

    在ASP.NET核心2.1中,Kestrel服务器切换到只支持IP套接字的“sockets”传输实现。

    为了使用Unix套接字,需要使用“libuv”传输实现。

    为此,请更改启动代码以选择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>