C # 3.5 - Conexión de tubería con nombre a través de la red
-
04-07-2019 - |
Pregunta
¿Cuál es la forma correcta de configurar una canalización con nombre en C # a través de una red?
Actualmente tengo dos máquinas, 'cliente' y 'servidor'.
El servidor configura su canalización de la siguiente manera:
NamedPipeServerStream pipeServer = new NamedPipeServerStream(
"pipe",
PipeDirection.InOut,
10,
PipeTransmissionMode.Byte,
PipeOptions.None)
pipeServer.WaitForConnection();
//... Read some data from the pipe
El cliente configura su conexión de la siguiente manera:
NamedPipeClientStream pipeClient = new NamedPipeClientStream(
"server",
"pipe",
PipeDirection.InOut);
pipeClient.Connect(); //This line throws an exception
//... Write some data to the pipe
Se puede acceder a la máquina del 'servidor' en la red yendo a " \\ servidor " ;.
Cada vez que ejecuto el programa, obtengo una excepción System.Unauthorizedized Access que dice "Acceso denegado a la ruta". El código funciona bien cuando ejecuto el servidor y el cliente en mi máquina local e intento conectarme a ". & Quot; con el cliente.
Solución
No es posible utilizar tuberías con nombre entre máquinas.
" El adaptador WCF-NetNamedPipe proporciona comunicación entre procesos en la misma computadora "
Otros consejos
Es necesario establecer permisos en NamedPipeServerStream para que el cliente tenga permisos para acceder a la canalización.
Miraría el método SetAccessControl de su NamedPipeServerStream.
Busque en el espacio de nombres System.Runtime.Remoting. IIRC, las canalizaciones con nombre son una opción para el protocolo utilizado por los canales remotos.