Проблема с размером байта [], отправляемого веб-сервису? - PullRequest
0 голосов
/ 17 июня 2010

Я пытаюсь отправить байт [] от клиента в веб-службу. Массив состоит из сериализованного XML-файла.

Мой тестовый сценарий работает (с очень маленьким байтом []). Вот код:

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();
        }

И код сервисной стороны выглядит так:

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;
    }

Это отлично работает. Результаты верны.

Однако, когда я пытаюсь прочитать реальный xml-файл из моей файловой системы (который правильно читает, когда я отображаю его на консоли), отправка возвращает ошибку, даже когда я просто пытаюсь принять и вернуть массив:

Первое случайное исключение типа 'System.ServiceModel.Dispatcher.NetDispatcherFaultException' произошло в mscorlib.dll

Фактический код на стороне клиента:

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();
        }

Код сервисной стороны:

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

Кто-нибудь сталкивался с этой проблемой раньше? Я не вижу большой разницы между этими двумя случаями, но я неопытен в C #.

Любые предложения приветствуются.

Спасибо!

badPanda

1 Ответ

2 голосов
/ 17 июня 2010
...