Change this line:
<snip>
static object Bounce(object obj)
{
MemoryStream stream = new MemoryStream();
SoapFormatter serializer = new SoapFormatter();
serializer.AssemblyFormat = FormatterAssemblyStyle.Simple;
<snip>
To
<snip>
static object Bounce(object obj)
{
MemoryStream stream = new MemoryStream();
SoapFormatter serializer = new SoapFormatter();
serializer.AssemblyFormat = FormatterAssemblyStyle.Full;
<snip>
Damon Squires
MCSD.NET MCDBA MCAD SCJP
-----Original Message-----
From: Moderated discussion of advanced .NET topics.
[mailto:[EMAIL PROTECTED] On Behalf Of Brian Berns
Sent: Thursday, October 23, 2003 10:25 PM
To: [EMAIL PROTECTED]
Subject: [ADVANCED-DOTNET] SOAP serialization bug?
I believe that I have found a bug in the serialization of ListDictionary
when using FormatterAssemblyStyle.Simple. The error I am seeing is:
SerializationException: Parse Error, no assembly associated with Xml key
a1:http://schemas.microsoft.com/clr/nsassem/System.Collections.Specializ
ed/System
ListDictionary
Can someone give me a sanity check and/or suggest how to get MS to fix
this?
Demonstration code follows.
-- Brian
-----------------------------------------------
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Diagnostics;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Soap;
using System.Text;
class Bug
{
static object Bounce(object obj)
{
MemoryStream stream = new MemoryStream();
SoapFormatter serializer = new SoapFormatter();
serializer.AssemblyFormat = FormatterAssemblyStyle.Simple;
serializer.Serialize(stream, obj);
Console.WriteLine("Bouncing {0}...", obj);
Console.WriteLine(new
string(Encoding.ASCII.GetChars(stream.ToArray())));
stream.Seek(0, SeekOrigin.Begin);
serializer = new SoapFormatter();
return serializer.Deserialize(stream);
}
static void Try(IDictionary dict)
{
dict["a"] = "john";
dict["b"] = "paul";
dict["c"] = "george";
dict["d"] = "ringo";
dict = (IDictionary) Bounce(dict);
Debug.Assert((string) dict["a"] == "john");
Debug.Assert((string) dict["b"] == "paul");
Debug.Assert((string) dict["c"] == "george");
Debug.Assert((string) dict["d"] == "ringo");
}
public static void Main()
{
Try(new Hashtable()); // this works
Try(new ListDictionary()); // this doesn't!
}
}
===================================
This list is hosted by DevelopMentor(r) http://www.develop.com
NEW! ASP.NET courses you may be interested in:
2 Days of ASP.NET, 29 Sept 2003, in Redmond
http://www.develop.com/courses/2daspdotnet
Guerrilla ASP.NET, 13 Oct 2003, in Boston
http://www.develop.com/courses/gaspdotnet
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentor� http://www.develop.com
NEW! ASP.NET courses you may be interested in:
2 Days of ASP.NET, 29 Sept 2003, in Redmond
http://www.develop.com/courses/2daspdotnet
Guerrilla ASP.NET, 13 Oct 2003, in Boston
http://www.develop.com/courses/gaspdotnet
View archives and manage your subscription(s) at http://discuss.develop.com