views:

48

answers:

1

I am trying to send a byte[] from a client to a web service. The array is composed of a serialized XML file.

My test scenario works (with a very small byte[]). Here is the code:

FormsService.FormsServiceClient client = new FormsService.FormsServiceClient();
        XmlDocument doc = new XmlDocument();
        XmlElement root = doc.CreateElement("root");
        XmlElement element = doc.CreateElement("child");
        root.AppendChild(element);
        doc.AppendChild(root);
MemoryStream ms = new MemoryStream();
        doc.Save(ms);
        byte[] bytes = ms.ToArray();
if (client.ServerActive())
        {
            client.SubmitForm(bytes);
            Console.ReadLine();
        }

And the service-side code looks like this:

public byte[] SubmitForm(byte[] bytes)
    {
        XmlDocument doc = new XmlDocument();
        string xml = Encoding.UTF8.GetString(decryptedBytes);
        doc.LoadXml(xml);
        XmlNodeList nodeList = doc.GetElementsByTagName("child");
        byte[] returnBytes = Encoding.UTF8.GetBytes(nodeList[0].Name);
        return bytes;
    }

This works perfectly. Results are correct.

However, when I try to read in an actual xml file from my file system (which is reading in correctly when I display it to console), submission returns an error even when I just try to accept and return the array:

A first chance exception of type 'System.ServiceModel.Dispatcher.NetDispatcherFaultException' occurred in mscorlib.dll

The actual client side code:

FormsService.FormsServiceClient client = new FormsService.FormsServiceClient();
        XmlDocument doc = new XmlDocument();
        doc.Load(myFilePath);
        MemoryStream ms = new MemoryStream();
        doc.Save(ms);
        byte[] bytes = ms.ToArray();

        if (client.ServerActive())
        {
            client.SubmitForm(bytes);
            Console.ReadLine();
        }

The service side code:

public byte[] SubmitForm(byte[] bytes)
{
    return bytes;
{

Has anyone encountered this problem before? I don't see much difference between the two cases, but I am inexperienced with C#.

Any suggestions would be much appreciated.

Thanks!

badPanda

+2  A: 

Try increasing the maximum message size quota.

Darin Dimitrov
Wouldn't the exception raised indicate that the message size quota has been reached? It sure does in my environment.
Kezzer
It looks like it would. However, this is a byte[] and the link he posted applies to XML serialization, rather than byte serialization. So maybe the error is different?
badpanda
Worked. Thanks!
badpanda
No matter the serialization mechanism, it's the message size which is limited. Also the link I posted applies exactly to binary serialization (netTcpBinding)
Darin Dimitrov
@Kezzer, this will depend on whether you've activated exception details to propagate in your service configuration which btw you shouldn't in production.
Darin Dimitrov