[Mono-list] A problem about WCF interoperation between mono and MS .Net
Atsushi Eno
atsushieno at veritas-vos-liberabit.com
Mon Apr 23 08:50:40 UTC 2012
One possibility idea is this: interoperability wise, WCF sucks when
there is generic types by adding hash-based suffix on the element names.
So, give explicit name on the dictionary object by subclassing it or
whatever. If it still doesn't work, I have no idea.
Atsushi Eno
hayate wrote:
> Hi all,
>
> These days I've been struggling with a problem: a Windows silverlight
> app cannot deserialize the data from a WCF service under Mono, which
> later leads to my discovery.
>
> When serializing and deserializing some dictionary style data, it
> seems the MS .Net implementation does not work well with Mono imp, I
> made a simple case to demo this:
>
> Say I have a WCF service like this:
> // WCF service contract
> [ServiceContract]
> public interface IAnswerService
> {
> [OperationContract]
> Dictionary<int, List<string>> Ask ();
> }
>
> public class AnswerService : IAnswerService
> {
> public Dictionary<int, List<string>> Ask ()
> {
> var d = new Dictionary<int, List<string>>() { {42, new
> List<string>(){"universe", "life"}} };
>
> return d;
> }
> }
>
> public class Test
> {
> public static void Main (string [] args)
> {
> var baseAddress = new Uri("http://localhost:8080/Answer.svc");
> var host = new ServiceHost (typeof (AnswerService));
> var binding = new BasicHttpBinding ();
> host.AddServiceEndpoint(typeof(IAnswerService), binding,
> baseAddress);
> host.Open ();
>
> Console.WriteLine ("Type [CR] to stop...");
> Console.ReadLine ();
> host.Close ();
> }
> }
>
> Note the data structure is Dictionary<int, List<string>>. Then I made
> a console client to read the data. The problem is, if I run the client
> under mono, everything is OK, if I run it under MS .Net, nothing is
> read. If I change the data structure to things like Dictionary<int,
> string>, everything works as expected.
>
> sum it up:
> server under Mono <====not work====> client under MS .Net
> server under Mono <=====work=====> client under Mono
> server under MS .Net <=====work=====> client under MS .Net
> server under MS .Net <=====work=====> client under Mono
>
> only one case does not work.
>
> Any ideas?
>
> Thanks
>
> Regards,
>
>
> _______________________________________________
> Mono-list maillist - Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
More information about the Mono-list
mailing list