Remoting virker ikke
Hejsa,Jeg er i gang med at lave en opgave til skolen, hvor det er påkrævet, at kommunikationen mellem brugergrænsefladen og dataklasserne skal foregå remote.
Jeg har nogenlunde læst mig til hvordan man sætter det op, men det virker ikke helt efter hensigten.
Jeg har to klasser i to forskellige projekter (på to forskellige computere). Den ene er en windows forms applikation:
Denne klasse har en metode, der aktiveres når man trykker på en knap:
private void button1_Click(object sender, System.EventArgs e)
{
TcpChannel channel = new TcpChannel();
ChannelServices.RegisterChannel(channel);
ActivatedClientTypeEntry acte = new ActivatedClientTypeEntry(typeof(RemoteServer.Testklasse), "tcp://192.168.0.3:5150");
RemotingConfiguration.RegisterActivatedClientType(acte);
RemoteServer.Testklasse minTestklasse = new RemoteServer.Testklasse();
label1.Text = minTestklasse.HentNavn();
}
Klassen har følgende using direktiver ud over dem der indsættes som standard:
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
Det andet projekt er et class library med to klasser.
- En test klasse der returnerer en streng:
using System;
namespace RemoteServer
{
public class Testklasse : MarshalByRefObject
{
public string HentNavn()
{
return "Thomas";
}
}
}
Og en serverklasse, der opretter en TcpChannel:
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace RemoteServer
{
public class RemoteServer
{
public static void Main()
{
TcpChannel channel = new TcpChannel(5150);
ChannelServices.RegisterChannel(channel);
ActivatedServiceTypeEntry aste = new ActivatedServiceTypeEntry(typeof(Test2));
RemotingConfiguration.RegisterActivatedServiceType(aste);
}
}
}
Jeg har både forsøgt at afvikle det fra to computere og fra den samme maskine, men jeg får den samme fejl:
Kørsel fra Visual Studio Net
-----------------------------------------------------
An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in mscorlib.dll
Adittional information: Der kunne ikke oprettes forbindelse, fordi destinationscomputeren aktivt nægtede det.
-----------------------------------------------------
Desuden kan jeg kun få lov at builde projektet med windows formen, hvis jeg tilføjer .dll'en fra RemoteServer-projektet som en reference - noget, der ikke beskrives i nogle af de bøger jeg har haft adgang til. Hvordan kan det være, at klassenavnet og det remote namespace kun accepteres hvis man tilføjer en assembly-reference? Ryger en del af ideen med remoting så ikke?
Det var et langt indlæg, håber på nogle skarpe svar da det er ved at drive mig til vandvid.
Med venlig hilsen,
Thomas
P.S. Det skal lige siges at der selvfølgelig er netværksadgang mellem maskinerne :-)