Proxie, Channel und Co.
-
*prust*
Ich hab ein kleines Problem mit dem Remoting in .NET. Ich versuche folgendes zu tun:
Auf dem Server existiert eine Factory die als WellKnownServiceType registriert ist und Objekte vom Typ myObject erzeugt und die Referenz als MarshalByRefObject zum Client transportiert. Dieses myObject stellt drei Events bereit an die sich der Client über einen Wrapper (EventShim) anmeldet. Das Anmelden geht einwandfrei und auf dem Server wird auch angezeigt, daß am Event eine Routine angemeldet ist.
Das Problem:
Wenn das Event vom Server ausgelöst wird, dann wird mir eine RemotingException mit folgendem Fehlertext geworfen: "Der Remoteproxy hat keinen Channelempfänger, d.h. der Server besitzt keine registrierten Serverchannel oder die Anwendung hat keinen passenden Clientchannel, um mit dem Server zu kommunizieren."Mittlerweile mache ich das Marsheling für das myObject selbst über RemotingServices.Marshal und Unmarshal, damit gerantiert ein Proxie vorhanden ist. Weis jemand Rat??? Ich kenn mit dem Inhalt dieser Fehlermeldung absolut Null anfangen.
GVT
-
Hi,
die Fehlermeldung hatte ich noch nicht. Aber ich versuch mal zu helfen.
hast du auf den Clients ein Channel aufgemacht ? Der Server muss ja mit den Clients kommunizieren . Das geht aber nur, wenn der Client über ein Channel erreichbar ist. Natürlich muss da auch eine eventuelle Firewall mitspielen.Poste mal die Codezeilen, welche eine Verbindung mit dem Server aufbauen oder die
Konfigurationsdateien.Ein anderer Grund könnte sein, dass due ein Object übergibst, welches vom Client zum Server übergeben wird. Diese Objecte werden als Referenz übergeben. Dazu muss in version 1.1 der Typfilter auf Full gesetzt werden:
// auf dem RemotingServer oder auf Client, wenn Server mit CLient kommuniziert BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider(); provider.TypeFilterLevel = TypeFilterLevel.Full; IDictionary ports = new Hashtable(); ports["port"] = 3001; TcpChannel chan = new TcpChannel(ports, null, provider); // Channel Regristrieren