Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Out of Memory / 1 сообщений из 1, страница 1 из 1
27.11.2016, 22:43
    #39355583
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Out of Memory
Есть код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
XmlDocument doc = CreateMessageHeader(terminal_id, command_name, command_id);
            XmlElement root = doc.DocumentElement;

            XmlNode node = doc.CreateElement("status");
            node.InnerText = status.ToString();
            root.AppendChild(node);
            node = doc.CreateElement("description");
            node.InnerText = description;
            root.AppendChild(node);

            node = doc.CreateElement("zip");
            node.InnerText = System.Convert.ToBase64String(zip);
            root.AppendChild(node);
            byte[] xmlBuf = null;
            if (encrypt)
                xmlBuf = Encoding.UTF8.GetBytes(Crypto.EncryptStringAES(doc.OuterXml.ToString(), b));
            else
                xmlBuf = Encoding.UTF8.GetBytes(doc.OuterXml.ToString());

            return PackResponse(xmlBuf);


При попытке конвертнуть большой массив в System.Convert.ToBase64String получаю ошибку Out of Memory.
Есть ли способ это решить или при такой реализации нет?
Использовал код ниже, но не помогает. Опять получаю Out of Memory.


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public static string ToBase64(byte[] data)
        {
            var builder = new StringBuilder();

            using (var writer = new StringWriter(builder))
            {
                using (var transformation = new ToBase64Transform())
                {
                    // Transform the data in chunks the size of InputBlockSize.
                    var bufferedOutputBytes = new byte[transformation.OutputBlockSize];
                    var i = 0;
                    var inputBlockSize = transformation.InputBlockSize;

                    while (data.Length - i > inputBlockSize)
                    {
                        transformation.TransformBlock(data, i, data.Length - i, bufferedOutputBytes, 0);
                        i += inputBlockSize;
                        writer.Write(Encoding.UTF8.GetString(bufferedOutputBytes));
                    }

                    // Transform the final block of data.
                    bufferedOutputBytes = transformation.TransformFinalBlock(data, i, data.Length - i);
                    writer.Write(Encoding.UTF8.GetString(bufferedOutputBytes));

                    // Free up any used resources.
                    transformation.Clear();
                }

                writer.Close();
            }

            return builder.ToString();
        }



Вообще задача сформировать пакет и отправить на сервер.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Out of Memory / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]