Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

remoting issues with memorystream passing through remoting boundary

Status
Not open for further replies.

PhilJohnson

IS-IT--Management
Apr 20, 2006
17
GB
Hi,

I am using dotnet remoting with a binarry formatter.

I have a property that returns a memorystream that has had a file loaded
into it.

When I try to access this property though I get an error regarding "the
proxy has no channel sink....[]...or no suitable Client channel to talk to
the server."

I have investigated a bit and have come to the conclusion that the
memorystream object can itself be serialized with a binary formatter, but
when it is deserialized it throws an exception stating that

"End of Stream encountered before parsing was completed."

Can anybody suggest a way around this, or indeed a different way than the
memorystream to pass file data trhough remoting boundaries using the
binaryformatter?

In case its of use, this is the code I used to try out my
serialize/deserialize test...

// SEEMS TO SERIALIZE ok BUT THROWS AN ERROR ON DESIERIALIZE!!!!
BinaryFormatter objSerializer = new BinaryFormatter();
BinaryFormatter objDeserializer = new BinaryFormatter();
FileStream fst = File.OpenRead(Path.GetFullPath(file));
System.IO.MemoryStream objStream = GetMemoryStream(fst);
System.IO.MemoryStream objSerializedStream = new System.IO.MemoryStream();
objSerializer.Serialize(objSerializedStream, objStream);
System.IO.MemoryStream objReturnStream = new System.IO.MemoryStream();
try
{
//objReturnStream =
(MemoryStream)(objDeserializer.Deserialize(objSerializedStream));
object objDeserialisedFile =
objDeserializer.Deserialize(objSerializedStream);
}
catch(Exception ex)
{
MessageBox.Show("Exception: " + ex.Message);
}

--
Regards,

Phil Johnson
 
I added this call to set the memory stream back to the start before it was deserialized and it showed that the memorystream can indeed be serialised and deserialised by the binary formatter.

objSerializedStream.Seek(0, SeekOrigin.Begin);

SO does anybody have any idea why my remoting is failing on the property
that exposes a MemoryStream object?

I can set the property itself to a memory stream object on the client, but
in the next line when I try to get the data out of the object I get this
error:

Error
====
This remoting proxy has no channel sink which means either the server has no
registered server channels that are listening, or this application has no
suitable client channel to talk to the server.

StackTrace
===========
Server stack trace:
at
System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg, Boolean useDispatchMessage, Int32 callType)
at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(IMessage reqMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type)
at System.IO.Stream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.MemoryStream.WriteTo(Stream stream)
at
System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase
mb, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext,
Object[]& outArgs)\r\n at
System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage
msg, Int32 methodPtr, Boolean fExecuteInContext)\n\nException rethrown at
[0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type)
at System.IO.MemoryStream.WriteTo(Stream stream)
at ConsoleApplication1.Class1.SaveMemoryStream(MemoryStream ms, String
FileName) in
c:\\hexagon\\hexagon.mycontainer\\consoleapplication\\class1.cs:line 160
at ConsoleApplication1.Class1.Main(String[] args) in
c:\\hexagon\\hexagon.mycontainer\\consoleapplication\\class1.cs:line
85" string
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top