Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing a Dictionary to WCF service

Tags:

c#

dictionary

wcf

I need to pass a Dictionary (with max 20,000 entries) to a WCF service. Can I pass it all by once?

void SubmitDictionary(Dictionary<string, MyEntry> val);

where MyEntry is :

class MyEntry
{
    string Name;
    long Age;
}

Is there a configuration for size of the value passed? Or can we pass as large data as this?

like image 572
Sandeep Avatar asked May 25 '10 06:05

Sandeep


3 Answers

Two things I need to know.

  1. What type of binding r u using ? Like BasicHttpBinding or wsHttpBinding. If you are using wsHttpBinding you don't need to worry about it's length

  2. Have you made your class serializeable? If not then make it like this:

    [DataContract]
    public Class MyEntry
    {
          [DataMember]
          public string Name {get; set;}

          [DataMember]
          public long Age {get; set;}
    }
like image 145
Johnny Avatar answered Oct 14 '22 05:10

Johnny


You unfortunately have a bigger problem and that's that you can't serialize an IDictionary.

You're probably going to have to create an array or similar of a serializable custom key-value type.

like image 20
Doobi Avatar answered Oct 14 '22 04:10

Doobi


There's MaxReceivedMessageSize, MaxStringContentLength and MaxBufferSize.

Check the link

http://geekswithblogs.net/niemguy/archive/2007/12/11/wcf-maxstringcontentlength-maxbuffersize-and-maxreceivedmessagesize.aspx

Read related question on how to increase size

wcf max message size

Silverlight & WCF: Max message size

EDIT Check also Service Reference's configuration. You should set Dictionary collection type to Dictionary.

Good Luck!

like image 28
hgulyan Avatar answered Oct 14 '22 03:10

hgulyan