使用以下命令创建命名管道时命名管道客户端流 or 命名管道服务器流dotnet core 的类中,关联的“管道”(看起来实际上是一个套接字)已自动将“CoreFxPipe_”添加到文件名的前面。
有没有一种非黑客的方法来防止这种行为?我只是希望文件名与我提供给构造函数的名称完全相同。
在 dotnet 核心中文档 https://learn.microsoft.com/en-us/dotnet/api/system.io.pipes.namedpipeserverstream?view=netcore-2.2,它描述了以下构造函数:
NamedPipeServerStream(字符串)
使用指定的管道名称初始化 NamedPipeServerStream 类的新实例。
但是,由于上述原因,这种描述充其量似乎具有误导性。
解决方案:
使用绝对路径作为管道名称
Details:
查看源代码命名管道客户端流, line 93显示管道名称通过调用“标准化”获取管道路径这是一种方法管道流班级。查看源代码管道流, 获取管道路径实施于line 35.
该方法似乎检查“IsPathRooted”(大概是;管道名称是绝对路径)。如果是,那么它将让您“完全控制”定义套接字的路径。否则它会将套接字放置在 /tmp/ 中并添加前缀CoreFxPipe_到文件名。
line 93
https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.cs https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.cs
line 35:
https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/PipeStream.Unix.cs https://github.com/dotnet/corefx/blob/master/src/System.IO.Pipes/src/System/IO/Pipes/PipeStream.Unix.cs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)