将应用程序升级到ASP.NET Core 2.1时,UNIX套接字不再起作用,应用程序在启动时抛出未处理的异常:
System.ArgumentException:仅支持ListenType.IPEndPoint。
如何使用ASP.NET Core 2.1侦听UNIX套接字?
答案 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>