yar229 / WebDavMailRuCloud

WebDAV cloud.mail.ru ...& Yandex.Disk | WebDAV Облако Mail.Ru Сетевой Диск
MIT License
487 stars 58 forks source link

Постоянное зависание WebDav через NetDrive клиент при попытке доступа содержимого файлов на облаке, а также ошибки #70

Closed Corak667 closed 7 years ago

Corak667 commented 7 years ago

Сначала наглухо повесило webdav, пришлось прерывать процесс и отключать соединение (использую NetDrive), при повторной попытке зашло, но выдало кучу ошибок http://picsee.net/upload/2017-03-10/ea078f82ddd9.png

[11]: PROPFIND:http://127.0.0.1:801/temp:127.0.0.1:801 - Start processing
[11]: PROPFIND:http://127.0.0.1:801/temp:127.0.0.1:801 - Finished processing (70
1ms, HTTP result: 207)
[8]: GET:http://127.0.0.1:801/Cloud/unins000.exe:127.0.0.1:801 - Finished proces
sing (3511ms, HTTP result: 200)
[4]: Exception
System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен.
Имя объекта: "System.Net.HttpListenerRequest".
   в System.Net.HttpListenerRequest.CheckDisposed()
   в System.Net.HttpListenerRequest.GetKnownHeader(HttpRequestHeader header)
   в NWebDav.Server.HttpListener.HttpRequest.get_RemoteEndPoint()
   в NWebDav.Server.WebDavDispatcher.<>c__DisplayClass6_0.<DispatchRequestAsync>
b__5()
   в YaR.WebDavMailRu.Log4NetAdapter.Log4NetLoggerAdapter.Log(LogLevel logLevel,
 Func`1 messageFunc, Exception exception)
   в NWebDav.Server.WebDavDispatcher.<DispatchRequestAsync>d__6.MoveNext()
--- Конец трассировка стека из предыдущего расположения, где возникло исключение
 ---
   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   в NWebDav.Server.WebDavDispatcher.<DispatchRequestAsync>d__6.MoveNext()
--- Конец трассировка стека из предыдущего расположения, где возникло исключение
 ---
   в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNoti
fication(Task task)
   в YaR.WebDavMailRu.Program.<>c__DisplayClass3_0.<<DispatchHttpRequestsAsync>b
__1>d.MoveNext()
[5]: PROPFIND:http://127.0.0.1:801/temp:127.0.0.1:801 - Start processing
[3]: PROPFIND:http://127.0.0.1:801/temp:127.0.0.1:801 - Finished processing (319
ms, HTTP result: 207)

Очень медленно качает, (100кбс или менее), но потом вообще обрывается и виснет

Corak667 commented 7 years ago

Написал об этом разработчикам NetDrive, может тоже изучат проблему и что-то решает у себя. Не уверен, что тут виноват сервер, скорее всего комплексно.

Похожая проблема была с DavDrive на Android - там скачивало около 1мб файла и дальше записывало мусор вместо данных. http://picsee.net/upload/2016-02-20/398383c4bfd6.png Только с BestDAV на android такой проблемы не было. ... Долго переписывался с автором DavDrive, наконец он починил проблему и в новых версиях все нормально с NetDrive. Но это было на Android, даже Ghisler писал о лимитах (Android AIDL limit): http://ghisler.fileburst.com/android/history2.txt "2014-05-21 Fixed: FTP, SFTP, LAN plugins: Support very long directories (several 1000 files), need to split list into blocks <1 MB (Android AIDL limit)" "2013-12-22 Fixed: GoogleDrive plugin: problems with uploading multiple files >1 MB 2013-08-13 Fixed: Plugin interface: Support sending the file list in multiple chunks (Android transfer buffer is limited to 1 MByte)"

Jochen Ruehl (автор DAVDrive) писал по поводу NetDrive: "Somehow NetDrive does not correctly handle the result of the GET request. Maybe that BestDav does a chunked encoding, or does handle the GET request in a different way." "...range header support. Might fix the NetDrive issue." Потом мы еще исследовали проблему через logcat и он наконец починил ее. Но связано оно было с какими-то android лимитами, так что может не актуально

yar229 commented 7 years ago

https://github.com/yar229/WebDavMailRuCloud/commit/ac53c0b73b30266ef88de05b4268b463ab4ecaa6 Кажеццо, починил в 1.5.62

Corak667 commented 7 years ago

УХ, рили починил! Пасиб! http://f6.s.qip.ru/cMfvX1Jy.png

Corak667 commented 7 years ago

А что там было? Можно подробней, чтобы я народ оповестил и авторов NetDrive

yar229 commented 7 years ago

Моя ошибка, при скачивании я отдавал нетдрайву на 1 байт меньше, чем он заказывал, соотвественно, он висел и ждал этот недостающий байт.