2009-03-13 7 views
2

Nous recevons l'erreur suivante en utilisant IPC.
"Impossible de se connecter à un port IPC: le système ne trouve pas le fichier spécifié." Le problème se produit sur un serveur Windows 2003.Problème IPc Remoting

Bien sûr, cela n'arrive que dans la production. Nous sommes incapables de reproduire cela dans notre environnement de développement.

Le service Windows qui tente d'utiliser IPC s'exécute en tant que système local.

Existe-t-il une sorte d'autorisation qui doit être modifiée?

+0

Avez-vous essayé de courir le service sur le système de production en tant qu'utilisateur différent que vous savez dispose des autorisations à la ressource (s) en question? –

+0

Oui, nous avons changé l'utilisateur pour le service à un avec des droits d'administrateur et tout a fonctionné. Donc je suppose que c'est une chose de permission. – Danno

+0

Donc ce serait un problème de simplement créer un compte d'utilisateur avec exactement les permissions dont vous avez besoin et d'exécuter le service sous ce compte plutôt que sous Système local? –

Répondre

1

Nous avons essayé d'accéder au canal avant d' a été tourné. Nous recevrions donc l'erreur "introuvable". Envelopper le code d'accès dans un code «est-il vraiment prêt» a résolu le problème.

+0

Danno: J'ai un problème similaire ici: http: // stackoverflow.com/questions/1474787/determiner-if-another-process-has-registered-a-channel-for-remoting À quoi exactement ressemblait votre emballage «est-ce que c'est vraiment prêt»? – snicker

0

Veuillez publier le code que vous utilisez pour initialiser le canal du serveur et publier l'objet, ainsi que le code client avec l'uri que vous utilisez lorsque vous essayez d'accéder à l'objet distant.

Une erreur courante est lorsque vous initialisez le canal avec un dictionnaire, et de définir le nom du canal en utilisant

dic["name"] = "channelName"; 
//used for retrieving the channel - ChannelServices.GetChannel("channelName"); 

au lieu de

dic["portName"] = "channelName"; 
//used as the identifier for the named pipe - 
//The client should get the object from the uri : ipc://channelName/objectName 
1

Pour moi, DTA fonctionnait bien. Mais soudain, j'ai commencé à avoir cette même erreur.

Pour moi, la solution est la suivante:

-> Go To Task Manager 
-> Go To Processes Tab 
-> Find and kill the DTA process. For me this process is named as 'DTASHELL.exe' 

Maintenant, essayez de lancer DTA. Cela devrait fonctionner maintenant :-)

1

Nous avons eu ce problème dans le code de production. Il échouait sur un petit pourcentage des systèmes de l'utilisateur.

L'erreur se trouve dans le code Microsoft que nous utilisions. Il génère le canal IPC en utilisant le nom d'utilisateur.

ipc: // APP_USER_000: SingeInstanceIPCChannel/SingleInstanceApplicationService

avec certains caractères dans le nom d'utilisateur, ce qui génère une URL de canal invalide, de sorte que l'application de réception ne parvient pas à créer le canal en premier lieu. Notre solution consiste à utiliser un hash du nom d'utilisateur, plutôt que les premiers caractères du nom d'utilisateur.

(nous utilisions le code ici: http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx)