2009-03-13 6 views
2

Wir empfangen den folgenden Fehler, der IPC verwendet.
"Fehler beim Verbinden mit einem IPC-Port: Das System kann die angegebene Datei nicht finden." Das Problem tritt auf einem Windows 2003-Server auf.IPC Remoting Problem

Natürlich passiert es nur in der Produktion. Dies können wir in unserer Entwicklungsumgebung nicht nachvollziehen.

Der Windows-Dienst, der versucht, IPC zu verwenden, wird als lokales System ausgeführt.

Gibt es eine Art von Erlaubnis, die geändert werden muss?

+0

Haben Sie versucht, den Dienst auf dem Produktionssystem als ein anderer Benutzer ausgeführt wird, die Sie wissen, Berechtigungen für die Ressource (n) in Frage hat? –

+0

Ja, wir haben den Benutzer für den Dienst auf einen mit Administratorrechten geändert und alles hat funktioniert. Ich nehme an, es ist eine Erlaubnissache. – Danno

+0

Also wäre es ein Problem, einfach ein Benutzerkonto mit genau den Berechtigungen zu erstellen, die Sie benötigen, und den Dienst unter diesem Konto und nicht unter Lokales System auszuführen? –

Antwort

1

Wir versuchten, den Kanal zuzugreifen, bevor Sie es war gesponnen. Also würden wir den Fehler "nicht gefunden" erhalten. Das Einpacken des Zugangscodes in einen "Ist es wirklich bereit" -Code behebt das Problem.

+0

Danno: Ich habe ein ähnliches Problem hier: http: // stackoverflow.com/questions/1474787/deet-wenn-ein-anderer-prozess-hat-registriert-ein-kanal-fuer-remoting Wie genau hat dein "is it ready ready" Wrapper ausgesehen? – snicker

0

Geben Sie den Code ein, den Sie zum Initialisieren des Serverkanals verwenden, und publizieren Sie das Objekt und den Clientcode mit der uri, die Sie verwenden, wenn Sie versuchen, auf das Remoteobjekt zuzugreifen.

Ein häufiger Fehler ist, wenn Sie den Kanal mit einem Wörterbuch zu initialisieren, und stellen Sie den Namen des Kanals

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

statt

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

Für mich funktionierte DTA gut. Aber plötzlich fing ich an, denselben Fehler zu bekommen.

Für mich ist das fix war:

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

Jetzt DTA zu starten versuchen. Es sollte jetzt funktionieren :-)

1

Wir hatten dieses Problem im Produktionscode. Bei einem kleinen Prozentsatz der Benutzer-Systeme ist ein Fehler aufgetreten.

Der Fehler stellt sich heraus, in dem Microsoft-Code zu sein, den wir verwendeten. Es generiert den IPC-Kanal mit dem Benutzernamen.

IPC: // APP_USER_000: SingeInstanceIPCChannel/SingleInstanceApplicationService

mit bestimmten Zeichen in den Benutzernamen, dies erzeugt eine ungültige Kanal URL, so dass die empfangende Anwendung den Kanal in den ersten Platz zu schaffen, schlägt fehl.

Unser Fix ist es, einen Hash des Benutzernamens zu verwenden, anstatt die ersten Zeichen im Benutzernamen.

(wir waren mit dem Code hier: http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx)