2014-12-18 5 views
0

Я использую WinHttpSendRequest/WinHttpWriteData для загрузки большого (54 МБ) файла на наш сервер, отправив его в куски 4 КБ, чтобы дать пользователям обратную связь. Насколько я знаю, это работает до недавнего времени. Теперь, когда я пытаюсь это сделать, загрузка идет очень быстро, а затем время ожидания WinHttpReceiveResponse() и неполные данные принимаются сервером.WinHttpWriteData, похоже, «затопляет» сервер

Я использую Win 8.1 64bit, IE11 11.0.15 (я думаю что WinHttp обновляется с IE), но на компьютере моего коллеги - той же версии Windows, IE, загрузка происходит гораздо медленнее, и ответ Безразлично Тайм-аут. Когда я пытаюсь выполнить тестирование на разных виртуальных машинах, проблема не очевидна. Другие коллеги, однако ... о Windows!

Просто чтобы быть ясно

  1. Насколько я знаю, этот код используется для работы!

  2. WinHttpOpen без установленный флаг ASYNC.

  3. Глагол HTTP является POST

код в Delphi XE2

Result:= WinHttpSendRequest(RequestHandle,PWideChar(Headers),Length(Headers),WINHTTP_NO_REQUEST_DATA,0,FormBuffer.Size,Cardinal(Self)); 
If Result 
then begin 
     BytesToWrite:= FormBuffer.Size; 
     while BytesToWrite > 0 
     do begin 
      If BytesToWrite > SizeOf(WriteBuffer) 
      then BufFill:= SizeOf(WriteBuffer) 
      else BufFill:= BytesToWrite; 
      FormBuffer.ReadBytes(WriteBuffer,BufFill); // FormBuffer is my object to supply data and headers 
      If WinHttpWriteData(RequestHandle,@WriteBuffer[0],BufFill,Written) 
      then Dec(BytesToWrite,Written) 
      else Error('WinHttpWriteData'); // Error() method calls GetLastError, assembles error message and logs it 
      If Assigned(OnDataWrite) 
      then OnDataWrite(Self,Written); // Event that notifies user 
     end; 
     FetchResponse(RequestHandle); // Calls WinHttpReceiveResponse() and then fetches data 
     Result:= True; 
end 
else GLE:= Error('WinHttpSendRequest'); 

Этот код был в значительной степени адаптации этого кода:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384120(v=vs.85).aspx

" WinHttp Пример кода для PUT. " внизу.

ответ

0

Это AVG ...!

Отключение AVG дает нормальную производительность для загрузки ... теперь это просто вопрос определения того, какая часть (-ы) мешает.

 Смежные вопросы

  • Нет связанных вопросов^_^