将 WCF Windows 命名管道与 Docker 容器结合使用

问题描述 投票:0回答:2

我一直在尝试连接到本地运行命名管道控制台应用程序的 docker 容器。 我无法通过 docker 容器从本地计算机连接到命名管道。 我已经按照网上的代码片段找到了通过在命名管道的 docker run 中声明卷来做到这一点,但我有点困惑如何让它工作。 下面是我正在使用的代码示例。

控制台应用程序入口点

        private static void Main(string[] args)
        {
                using (var host = new ServiceHost(new DiscoveryProxyService(), "net.pipe://localhost/testname"))
            {
                ServiceDiscoveryProxyEndpointConfigurator.Configure(host, endpointConfig);
                host.Open();
            }
         }

我的 Docker 文件看起来像这样

FROM mcr.microsoft.com/dotnet/framework/wcf:4.7.2-windowsservercore-ltsc2019
SHELL ["powershell"]

RUN Install-WindowsFeature -name NET-WCF-Pipe-Activation45
RUN Install-WindowsFeature -name NET-WCF-TCP-Activation45
RUN Install-WindowsFeature -name NET-WCF-HTTP-Activation45

# Next, this Dockerfile creates a directory for your application
WORKDIR WcfDiscoveryProxyTest

# Copies the site you published earlier into the container.
COPY WcfDiscoveryProxyTest/ .

# start WCFTCPSElfHost service process in container as entrypoint process.
ENTRYPOINT .\bin\Debug\WcfDiscoveryProxyTest.exe

我的 Docker 命令如下

docker build -t test:latest .
docker run -d -itd -v \\.\pipe\localhost\testname:\\.\pipe\localhost\testname test:latest

任何帮助将不胜感激

c# docker wcf named-pipes
2个回答
0
投票

恐怕你运气不好。 WCF 仅支持同一台机器上的命名管道...

[...] netNamedPipeBinding 绑定,它提供同一台计算机上的跨进程通信。命名管道不能跨机器工作。

https://learn.microsoft.com/en-us/dotnet/framework/wcf/samples/netnamedpipebinding

这(很可能)也适用于 docker 容器。


0
投票

你尝试过netcore版本吗? 我使用命名管道进行了测试,尝试使用容器中的客户端连接到主机中的服务器。 但我发现它不能在netframework中工作,只有当客户端在netcore中时才工作

© www.soinside.com 2019 - 2024. All rights reserved.