[C#] Probleme mit Remoting Tutorial von tutorials.de

Hi,

nachdem ich zufällig auf das selbe Tutorial stoß und den selben Fehler erfuhr, habe ich es in C# zum laufen bekommen. Dem Autor wird es wohl wenig nutzen, sondern eher den Leuten die diesen Thread finden.

Hier die Lösung:

Umschreiben auf Serverseite:

private void startServer()
{
txtPort.Enabled = false; // damit nicht geändert wird während der server läuft

rtbLog.Text += "server wird gestartet...\r\n";

BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = int.Parse(txtPort.Text.Trim());

myChan = new TcpChannel(props, null, provider);

rtbLog.Text += "TcpChannel wird registriert..\r\n";

ChannelServices.RegisterChannel(myChan, true);

RemotingConfiguration.RegisterWellKnownServiceType(typeof(ServerObject), "chat.rem", WellKnownObjectMode.Singleton);

rtbLog.Text += "fertig!\r\nServer ist gestartet und lauscht am Port " + txtPort.Text;
}

und auf Clientseite:

private void connect()
{
txtNickname.Enabled = false;
txtIP.Enabled = false;
txtPort.Enabled = false;

BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 0;

myChannel = new TcpChannel(props, null, provider);
ChannelServices.RegisterChannel(myChannel, true);

myClient = new ClientObject(this, txtNickname.Text);

remServer = (IServer)Activator.GetObject(typeof(IServer), "tcp://" + txtIP.Text.Trim() + ":" + txtPort.Text.Trim() + "/chat.rem");
remServer._login(myClient);
}

Dies hat zusätzlich den Vorteil nichtmehr die veraltete Methode "ChannelServices.RegisterChannel(Channel)" zu benutzen.

Viel Spaß am Tutorial für alle suchenden.
 
Hi,

nachdem ich zufällig auf das selbe Tutorial stoß und den selben Fehler erfuhr, habe ich es in C# zum laufen bekommen. Dem Autor wird es wohl wenig nutzen, sondern eher den Leuten die diesen Thread finden.

Hier die Lösung:

Umschreiben auf Serverseite:

private void startServer()
{
txtPort.Enabled = false; // damit nicht geändert wird während der server läuft

rtbLog.Text += "server wird gestartet...\r\n";

BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = int.Parse(txtPort.Text.Trim());

myChan = new TcpChannel(props, null, provider);

rtbLog.Text += "TcpChannel wird registriert..\r\n";

ChannelServices.RegisterChannel(myChan, true);

RemotingConfiguration.RegisterWellKnownServiceType(typeof(ServerObject), "chat.rem", WellKnownObjectMode.Singleton);

rtbLog.Text += "fertig!\r\nServer ist gestartet und lauscht am Port " + txtPort.Text;
}

und auf Clientseite:

private void connect()
{
txtNickname.Enabled = false;
txtIP.Enabled = false;
txtPort.Enabled = false;

BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 0;

myChannel = new TcpChannel(props, null, provider);
ChannelServices.RegisterChannel(myChannel, true);

myClient = new ClientObject(this, txtNickname.Text);

remServer = (IServer)Activator.GetObject(typeof(IServer), "tcp://" + txtIP.Text.Trim() + ":" + txtPort.Text.Trim() + "/chat.rem");
remServer._login(myClient);
}

Dies hat zusätzlich den Vorteil nichtmehr die veraltete Methode "ChannelServices.RegisterChannel(Channel)" zu benutzen.

Viel Spaß am Tutorial für alle suchenden.

VIELEN DANK!

Das hat mich "gerettet". Sorry, dass ich den Thread nochmal
ausgegraben habe. ;)


MfG
qixx
 
Zurück