Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
DELAKEY
6 / 6 / 3
Регистрация: 20.11.2013
Сообщений: 247
1

Зависает при приёме больших данных

22.08.2016, 22:00. Просмотров 365. Ответов 1
Метки нет (Все метки)

не могу разобраться что я делаю с потоком входящих данных не так, при входе большого колличества данных цикл уходит на второй круг и зависает на e.Request.InputStream.Read(bufer, 0, bufer.Length - size);, уже пробовал по разному переделать но всё что то не так
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
        void OnPost(object sender, HttpRequestEventArgs e)
        {
            string LocalPath = e.Request.Url.LocalPath;
            LocalPath = LocalPath.TrimStart('/');
            string[] gets = LocalPath.Split('/');
 
            string filename = System.IO.Path.GetFileName(e.Request.Url.LocalPath);
 
            byte[] bufer = new byte[e.Request.ContentLength64];
            
            int size = 0;
            int load = 0;
            do
            {
                load = e.Request.InputStream.Read(bufer, 0, bufer.Length - size);
                size += load;
                if (size >= bufer.Length)
                {
                    break;
                }
            } while (load > 0);
 
            string q = System.Text.Encoding.Default.GetString(bufer, 0, size);
 
            //post
            NameValueCollection QueryString = new NameValueCollection();
 
            try
            {
                var arry = q.Split('&');
                for (int i = 0; i < arry.Length; i++)
                {
                    add(QueryString, arry[i]);
                }
 
            }
            catch
            {
                add(QueryString, q);
            }
            //
            //get
            var getstr = HttpUtility.ParseQueryString(e.Request.Url.Query);
 
            //
            RestResponse response = null;
 
            Logger.Trace("client " + e.Request.RemoteEndPoint.Address + " command " + filename);
            try
            {
                response = _RestCommandHub.Process(filename, getstr, QueryString);
            }
            catch (Exception er)
            {
                Logger.Error(er);
            }
 
 
            string responsejs;
            if (response != null)
            {
                responsejs = Newtonsoft.Json.JsonConvert.SerializeObject(response);
            }
            else
            {
                responsejs = "";
            }
 
            try
            {
                e.Response.AddHeader("Access-Control-Allow-Origin", "*");
                var bytes = Encoding.UTF8.GetBytes(responsejs);
                e.Response.WriteContent(bytes);
            }
            catch
            {
 
            }
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2016, 22:00
Ответы с готовыми решениями:

Хранение больших объемов данных в файлах.
Добрый день. Столкнулся с проблемой необходимо хранить и обработывать большое...

Потоковая передача больших данных по TCP из Java в C#
Добрый день, Прошу помощи в разборе полетов: Задача: передать картинку с...

ProgressBar при загрузке больших файлов
Подскажите, как сюда запихнуть progressBar1 в среднем текстовые файлы будут...

OutOfMemory при сравнении MD5 нескольких больших файлов
Доброго времени суток. Пилю программу файловой односторонней синхронизации...

Зависает при многопоточности
Доброе время суток.Помогите советом, несколько дней бьюсь, все перепробовал....

1
Micro
43 / 43 / 5
Регистрация: 12.11.2011
Сообщений: 436
03.09.2016, 13:08 2
Меня смутил этот момент:
C#
1
bufer.Length - size
в той строчке с Read. Зачем так вообще? И выведи чему равняется такая операция каждый шаг в цикле
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2016, 13:08

Зависает при выходе приложение
Доброй ночи. Имеется консольное приложение, которое убивает процессы всех...

C# зависает при работе с библиотеками Direct_X
Создаю проект, в который, по заданию, добавляются библиотеки: ...

C# зависает при попытке получить из dll длинные данные (строку, массив)
Имеется внешняя dll (не C#) с экспортными функциями, которая динамически...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru