Question

Quelle est la bonne façon de configurer un canal nommé en C # sur un réseau?

Actuellement, j'ai deux machines, "client" et "serveur".

Le serveur configure son canal de la manière suivante:

NamedPipeServerStream pipeServer = new NamedPipeServerStream(
    "pipe",
    PipeDirection.InOut,
    10,
    PipeTransmissionMode.Byte,
    PipeOptions.None)
pipeServer.WaitForConnection();
//... Read some data from the pipe

Le client établit sa connexion de la manière suivante:

NamedPipeClientStream pipeClient = new NamedPipeClientStream(
    "server",
    "pipe",
    PipeDirection.InOut);
pipeClient.Connect(); //This line throws an exception
//... Write some data to the pipe

Vous pouvez accéder à la machine "serveur" sur le réseau en allant sur "\\ serveur".

Chaque fois que j'exécute le programme, une exception System.UnauthorizedAccessException indique que "l'accès au chemin est refusé". Le code fonctionne correctement lorsque j'exécute le serveur et le client sur mon ordinateur local et que je tente de me connecter à ". & Quot; avec le client.

Était-ce utile?

La solution

Il n'est pas possible d'utiliser des canaux nommés entre des machines.

"L'adaptateur WCF-NetNamedPipe assure la communication entre processus sur le même ordinateur "

.

http://msdn.microsoft.com/en-us/library /bb226493.aspx

Autres conseils

Vous devez définir des autorisations sur NamedPipeServerStream afin que le client dispose des autorisations nécessaires pour accéder au canal.

Je regarderais la méthode SetAccessControl de votre NamedPipeServerStream.

Recherchez dans l'espace de noms System.Runtime.Remoting. IIRC, les canaux nommés sont une option pour le protocole utilisé par les canaux distants.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top