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

时间:2018-05-28 00:01:14

标签: asp.net-core kestrel-http-server asp.net-core-2.1

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

  

System.ArgumentException:仅支持ListenType.IPEndPoint。

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

1 个答案:

答案 0 :(得分:2)

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

为了使用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>