Remoting serialization fails with custom object

G

Guest

Hi,

I have a client application that is using remote objects from a IIS.

Everything works fine when using this from my code.

However. When a word add-in loads my code the request fails with a message
that it can not find the a assembly.

The assembly in question is one that is referenced in the servercode and on
the client, they both have the same version.


Summary; it works when I run it in my fixture, not when my code is called
from a application. And the assembly in question exists in THAT codes /bin
directory.

Can Anyone say anything I would be really gratefull.

Regards Greger

The method call fails with:

System.Runtime.Serialization.SerializationException occurred
Message="Unable to find assembly 'Handelsbanken.ADIC.BusinessData,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'."
Source="mscorlib"
StackTrace:
Server stack trace:
at
System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at
System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String
objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[]
typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32
objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler
handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain,
IMethodCallMessage methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream
serializationStream, HeaderHandler handler, Boolean fCheck, Boolean
isCrossAppDomain, IMethodCallMessage methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserializeMethodResponse(Stream
serializationStream, HeaderHandler handler, IMethodCallMessage
methodCallMessage)
at
System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding)
at
System.Runtime.Remoting.Channels.BinaryClientFormatterSink.DeserializeMessage(IMethodCallMessage mcm, ITransportHeaders headers, Stream stream)
at
System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
Exception 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
Handelsbanken.Research.ServiceInterfaces.IPublicationHandler.GetPublicationType(Int32 publicationTypeId)
at
Handelsbanken.Research.Logic.Client.PublicationHandler.GetPublicationType(Int32
publicationTypeId) in
C:\Projects\Research\Logic.Client\PublicationHandler.cs:line 25
 
G

Guest

Hi


I think I know what going on but not how to solve it.

The process is started from a different app domain and that
appdomain has no clue about the type im trying the get via remoting.

Is it possible to find a way to hook in a SerializationBinder or similar?

Any other solution to this problem?

Regards // Greger
--
----



Greger said:
Hi,

I have a client application that is using remote objects from a IIS.

Everything works fine when using this from my code.

However. When a word add-in loads my code the request fails with a message
that it can not find the a assembly.

The assembly in question is one that is referenced in the servercode and on
the client, they both have the same version.


Summary; it works when I run it in my fixture, not when my code is called
from a application. And the assembly in question exists in THAT codes /bin
directory.

Can Anyone say anything I would be really gratefull.

Regards Greger

The method call fails with:

System.Runtime.Serialization.SerializationException occurred
Message="Unable to find assembly 'Handelsbanken.ADIC.BusinessData,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'."
Source="mscorlib"
StackTrace:
Server stack trace:
at
System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at
System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String
objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[]
typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32
objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler
handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain,
IMethodCallMessage methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream
serializationStream, HeaderHandler handler, Boolean fCheck, Boolean
isCrossAppDomain, IMethodCallMessage methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.UnsafeDeserializeMethodResponse(Stream
serializationStream, HeaderHandler handler, IMethodCallMessage
methodCallMessage)
at
System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding)
at
System.Runtime.Remoting.Channels.BinaryClientFormatterSink.DeserializeMessage(IMethodCallMessage mcm, ITransportHeaders headers, Stream stream)
at
System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
Exception 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
Handelsbanken.Research.ServiceInterfaces.IPublicationHandler.GetPublicationType(Int32 publicationTypeId)
at
Handelsbanken.Research.Logic.Client.PublicationHandler.GetPublicationType(Int32
publicationTypeId) in
C:\Projects\Research\Logic.Client\PublicationHandler.cs:line 25
 
A

Anthony Glenwright

Have you had any luck with this? I have exactly the same problem with a
shell extension that is using remoting to call a server process.
 
G

Guest

Hi,


Yes the solution is to add a config file to the executing process, in my
case winword.exe.config.
This config makes the executing process aware of the dll's it must be aware
of.
Like this:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Handelsbanken.AUTO.BusinessData"/>
<codeBase version="1.0.0.0" href="C:\Program Files\Clarity
Workflow\AUTO\bin\Handelsbanken.AUTO.BusinessData.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Handelsbanken.ADIC.BusinessData"/>
<codeBase version="1.0.0.0" href="C:\Program Files\Clarity
Workflow\AUTO\bin\Handelsbanken.ADIC.BusinessData.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>



Hope this helps!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top