【发布时间】:2018-05-28 00:01:14
【问题描述】:
将应用程序升级到 ASP.NET Core 2.1 时,UNIX 套接字不再工作,并且应用程序在启动时抛出未处理的异常:
System.ArgumentException:仅支持 ListenType.IPEndPoint。
如何使用 ASP.NET Core 2.1 监听 UNIX 套接字?
【问题讨论】:
标签: 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 套接字?
【问题讨论】:
标签: asp.net-core kestrel-http-server asp.net-core-2.1
在 ASP.NET Core 2.1 中,Kestrel 服务器切换到“Sockets”传输实现,它只支持 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>
【讨论】: