[Mono-list] .NET Remoting
nemesis35
michal_kohut at centrum.sk
Tue Jun 5 10:20:28 EDT 2007
Hi guys,
I'm developing a distributed application in C#, where I want to use .NET
Remoting, but there's problem with it.
Everything works fine when I call remote procedure with parameters of
standard types, like string, int, bool,... But if I want to send an own
object, I get the error: "Unhandled Exception:
System.NullReferenceException: Object
reference not set to an instance of an object" I tried to use an HttpChannel
and also TcpChannel but the
problem is somewhere else.
I found an example that works when I use dll-s.
////////////////////////////
THIS IS SERVER:
<<<<Main.cs>>>>>
HttpServerChannel httpchannel = new HttpServerChannel(8085);
ChannelServices.RegisterChannel(httpchannel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(nsCRemoteObj.CRemoteObj),
"CRemoteObjURI",
WellKnownObjectMode.SingleCall
);
///////////////////////////
THIS IS CLIENT:
<<<<Main.cs>>>>
ChannelServices.RegisterChannel( new HttpChannel() );
IRemoteObj obj = (IRemoteObj) Activator.GetObject(
typeof(IRemoteObj),
"http://localhost:8085/CRemoteObjURI"
);
//calling remote procedure
Node node = new Node("127.0.0.1",12345);
Node nout = obj.TestMethod(node);
Console.WriteLine("TestMethod completed. Returned ip: {0}", nout.ipAdd);
/////////////////////////////////
MY REMOTE CLASS:
<<<CRemoteObj.cs>>>
public class CRemoteObj : System.MarshalByRefObject, IRemoteObj
{
public CRemoteObj()
{
Console.WriteLine("CRemoteObj constructor invoked.");
}
~CRemoteObj()
{
Console.WriteLine("CRemoteObj destructor invoked.");
}
// definition of our method(s)
public Node TestMethod(Node node)
{
Console.WriteLine("CRemoteObj.TestMethod invoked.");
Console.WriteLine("Ip Address = {0}, Port = {1}", node.ipAdd, node.po);
Node nout = node;
nout.ipAdd = "manager";
return nout;
}
}
/////////////////////////
AND INTERFACE (includes my own object):
<<<IRemoteObj.cs>>>
// custom object which we want to pass
[Serializable]
public class Node
{
public string ipAdd;
public int po;
public Node()
{
}
public Node(string ipAddress, int port)
{
ipAdd = ipAddress;
po = port;
}
};
// interface which contains declaration of our method(s)
public interface IRemoteObj
{
Node TestMethod(Node node);
}
/////////////////////////////////////////////////
That should work. But it doesn't, only when I make DLL files from Remote
Class (CRemoteObj.cs) and Interface (IRemoteObj.cs). And then I must include
these DLL files into my server and client.
I believe that this can work without DLL but I don't how, so if anyone has
any idea, please help me. I will really appreciate it, I cannot go forward
because of this. I don't want to use DLL files.
Thanx for any help.
--
View this message in context: http://www.nabble.com/.NET-Remoting-tf3872082.html#a10970553
Sent from the Mono - General mailing list archive at Nabble.com.
More information about the Mono-list
mailing list