[ https://issues.apache.org/jira/browse/IGNITE-5927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16113262#comment-16113262 ]
Pavel Tupitsyn commented on IGNITE-5927: ---------------------------------------- I've reproduced the issue, and I would say that this is a bug in {{System.Data.DataTable}}. Here is the code: {code} public virtual void GetObjectData(SerializationInfo info, StreamingContext context) { SerializationFormat remotingFormat = RemotingFormat; bool isSingleTable = context.Context != null ? Convert.ToBoolean(context.Context, CultureInfo.InvariantCulture) : true; SerializeDataTable(info, context, isSingleTable, remotingFormat); } {code} Exception comes from {{Convert.ToBoolean(context.Context, CultureInfo.InvariantCulture)}} The assumption that {{Context}} can be converted to bool does not look correct, see MSDN https://msdn.microsoft.com/en-us/library/h58hxyt6(v=vs.110).aspx: {code}additional: Any additional information to be associated with the StreamingContext.{code} Anyway, .NET framework is not going to be fixed, so we have to get rid of {{BinaryWriter}} in that context. > .NET: DataTable can't be serialized > ----------------------------------- > > Key: IGNITE-5927 > URL: https://issues.apache.org/jira/browse/IGNITE-5927 > Project: Ignite > Issue Type: Bug > Components: platforms > Affects Versions: 2.0 > Reporter: Pavel Tupitsyn > Assignee: Pavel Tupitsyn > Labels: .NET > Fix For: 2.2 > > > {{System.Data.DataTable}} can't be serialized: > {code} > cache.Put(1, new DataTable()); > {code} > results in exception: > {code} > System.InvalidCastException: Unable to cast object of type > 'Apache.Ignite.Core.Impl.Binary.BinaryWriter' to type 'System.IConvertible'. > at System.Convert.ToBoolean(Object value, IFormatProvider provider) > at System.Data.DataTable.GetObjectData(SerializationInfo info, > StreamingContext context) > at Apache.Ignite.Core.Impl.Binary.SerializableSerializer.WriteBinary[T](T > obj, BinaryWriter writer) in > S:\W\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Binary\SerializableSerializer.cs:line > 64 > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write[T](T obj) in > S:\W\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Binary\BinaryWriter.cs:line > 1224 > at Apache.Ignite.Core.Impl.Binary.Marshaller.Marshal[T](T val, > IBinaryStream stream) in > S:\W\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Binary\Marshaller.cs:line > 159 > at Apache.Ignite.Core.Impl.Binary.Marshaller.Marshal[T](T val) in > S:\W\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Impl\Binary\Marshaller.cs:line > 144 > {code} > StackOverflow question: > https://stackoverflow.com/questions/45490249/how-to-store-datatable-in-apache-ignite -- This message was sent by Atlassian JIRA (v6.4.14#64029)