Type 'Microsoft.Linq.Expressions.ParameterExpression' in Assembly 'Microsoft.Scripting.Core, Version=0.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable.
Server stack trace: at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type) at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFor matterConverter converter, ObjectWriter objectWriter) at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatt erConverter converter, ObjectWriter objectWriter) at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SerializeMessage(IMessage msg, 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 Microsoft.Scripting.Actions.IDynamicObject.GetMetaObject(Expression parameter) at Microsoft.Scripting.Actions.MetaObject.ObjectToMetaObject(Object argValue, Expression parameterExpression) at Microsoft.Scripting.Actions.MetaAction.Bind[T](Object[] args) at Microsoft.Scripting.Actions.CallSite`1.CreateNewRule(Rule`1 originalMonomorphicRule, Object[] args) at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args) at Microsoft.Scripting.Actions.UpdateDelegates.Update4[T,T0,T1,T2,T3,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3) at S$2.Initialize$17() at _stub_$226##76(Closure , CallSite , CodeContext , Object ) at Microsoft.Scripting.Actions.MatchCaller.Call2[T0,T1,TRet](Func`4 target, CallSite site, Object[] args) at Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[] args) at Microsoft.Scripting.Actions.UpdateDelegates.Update2[T,T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) at <module>$224##74(Closure , Scope , LanguageContext ) at Microsoft.Scripting.Runtime.OptimizedScriptCode.InvokeTarget(LambdaExpression code, Scope scope) at Microsoft.Scripting.ScriptCode.Run(Scope scope) at IronPython.Hosting.PythonCommandLine.<>c__DisplayClass1.<RunOneInteraction>b__0() SystemError: Type 'Microsoft.Linq.Expressions.ParameterExpression' in Assembly 'Microsoft.Scripting.Core, Version=0.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializab le. Marc On Wed, Jan 21, 2009 at 5:57 PM, Dino Viehland <[email protected]> wrote: > Can you run w/ -X:ExceptionDetail to get the full stack trace? > > It's presumably trying to serialize it for a call to IDynamicObject which has > a GetMetaObject(Expression e) method on it. > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Marc Saegesser > Sent: Wednesday, January 21, 2009 3:46 PM > To: Discussion of IronPython > Subject: Re: [IronPython] Remoting broken in 2.0? > > I was already using the typedproxy stuff in my code running under > 2.0b3 and my code looks just like the sample code you showed. It > works great in 2.0b3, but throws an exception in 2.0. > > The class it's complaining about, ParameterExpression, really isn't > serializable according to the documentation. So the question is why > is 2.0 trying to serialize a ParameterExpression when 2.0b3 wasn't? > My remote object doesn't do anything with Linq or expressions so I'm > not sure where it's coming from. > > > Marc > > > > On Wed, Jan 21, 2009 at 5:27 PM, Dino Viehland <[email protected]> wrote: >> This is related to 470 but is slightly different. But in both cases the CLR >> is lying to us and telling us your object does implement the interface but >> it really doesn't (or I'm assuming that's the case, maybe whatever you're >> doing Activator.CreateInstance does implement the interface). But now we're >> blowing up before the interface cast on the remote side because Expression >> trees aren't serializable (whereas before we were blowing up on the other >> side of the remote call because the remote object doesn't actually implement >> the interface). >> >> The workaround at the bottom of that bug should work for you. You can >> create a local "typed proxy" object which goes through the type object to >> get members instead of the instance. That should avoid the interface check >> and you should be able to talk to the remote object. For convenience here's >> the typed proxy object: >> >> class typedproxy(object): >> __slots__ = ['obj', 'proxyType'] >> def __init__(self, obj, proxyType): >> self.obj = obj >> self.proxyType = proxyType >> >> def __getattribute__(self, attr): >> proxyType = object.__getattribute__(self, 'proxyType') >> obj = object.__getattribute__(self, 'obj') >> return getattr(proxyType, attr).__get__(obj, proxyType) >> >> >> >> test = typedproxy(System.Activator.GetObject(RemoteTest, >> 'http://localhost:8000/RemoteTest'), RemoteTest) >> >> >> If that doesn't work let us know. >> >> >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of Marc Saegesser >> Sent: Wednesday, January 21, 2009 2:40 PM >> To: users >> Subject: [IronPython] Remoting broken in 2.0? >> >> I've been using 2.0b3 for quite some time with good results. I just >> tried to move to the final 2.0 release and ran into a fatal problem. >> I use .Net Remoting and when I try to create a proxy to a well known >> object using System.Activator.GetObject() I get the following error: >> >> SystemError: Type 'Microsoft.Linq.Expressions.ParameterExpression' in >> Assembly 'Microsoft.Scripting.Core, Version=0.9.0.0, Culture=neutral, >> PublicKeyToken=31bf3856ad364e35' is not marked as serializable. >> >> The only change was going from 2.0b3 to 2.0. >> >> I think this is the same problem reported in item 470 >> (http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=470) >> in June of 2006. >> >> Any ideas on how to get around the problem? >> >> Marc >> _______________________________________________ >> Users mailing list >> [email protected] >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >> _______________________________________________ >> Users mailing list >> [email protected] >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >> > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
