Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка при авторизации #243

Closed
Vatovv opened this issue Nov 29, 2023 · 13 comments
Closed

Ошибка при авторизации #243

Vatovv opened this issue Nov 29, 2023 · 13 comments

Comments

@Vatovv
Copy link

Vatovv commented Nov 29, 2023

Добрый день.
Я использую Linux ROSA Fresh Desktop 2021.1 с KDE Plasma 5.27.8
У меня получилось запустить программу на dotNet48. Если кому интересно, то вот что я сделал
sudo yum install mono
sudo yum install mono-extras
mono wdmrc.exe -p 3332

Версия mono:
Mono JIT compiler version 6.12.0.182 (tarball Thu Mar 9 13:21:07 UTC 2023)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: supported, not enabled.
Suspend: hybrid
GC: sgen (concurrent by default)

Все пакеты есть в официальном репозитории

Программа запускается. Я пытаюсь настроить подключение через стандартный проводник (Dolphin)
Screenshot_20231130_000428
Далее запрашивается логин и пароль, но после того как я его ввожу, в консоли выводится это

1]: WebDAV server running at http://127.0.0.1:3332/
[Thread Pool Worker]: PROPFIND:http://127.0.0.1:3332/:127.0.0.1:3332 - Start processing
[Thread Pool Worker]: Cloud instance created for my_secret@mail.ru
[Thread Pool Worker]: OAuth: authorizing.
[Thread Pool Worker]: HTTP:POST:https://o2.mail.ru/token (226 ms)
[Thread Pool Worker]: Unexpected exception while handling request (method=PROPFIND, url=http://127.0.0.1:3332/, source=127.0.0.1:3332
System.AggregateException: One or more errors occurred. (Could not load file or assembly 'System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.) ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
  at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract (System.Type objectType) [0x00007] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract (System.Type objectType) [0x0010f] in <dd21e08747d94bcebed8b56112226337>:0 
  at System.Collections.Concurrent.ConcurrentDictionary`2[TKey,TValue].GetOrAdd (TKey key, System.Func`2[T,TResult] valueFactory) [0x0003d] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at Newtonsoft.Json.Utilities.ThreadSafeStore`2[TKey,TValue].Get (TKey key) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract (System.Type type) [0x0000b] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContract (System.Type type) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe (System.Type type) [0x0000b] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Boolean checkAdditionalContent) [0x0000e] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00054] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.JsonSerializer.Deserialize[T] (Newtonsoft.Json.JsonReader reader) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0 
  at YaR.Clouds.Base.Requests.BaseRequestJson`1[T].DeserializeMessage (System.Collections.Specialized.NameValueCollection responseHeaders, System.IO.Stream stream) [0x00024] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Requests.BaseRequest`2[TConvert,T].MakeRequestAsync () [0x00216] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Repos.MailRuCloud.OAuth.Auth () [0x00093] in <0d950eb44acc43c686428ec322c2242d>:0 
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at System.Threading.Tasks.Task`1[TResult].GetResultCore (System.Boolean waitCompletionNotification) [0x00034] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at System.Threading.Tasks.Task`1[TResult].get_Result () [0x0000b] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at YaR.Clouds.Base.Repos.MailRuCloud.OAuth.<.ctor>b__4_0 (YaR.Clouds.Base.Requests.Types.AuthTokenResult old) [0x00041] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Common.Cached`1+<>c__DisplayClass8_0[T].<RefreshValueIfNeeded>b__0 () [0x00000] in <0d950eb44acc43c686428ec322c2242d>:0 
  at System.Lazy`1[T].ViaFactory (System.Threading.LazyThreadSafetyMode mode) [0x00049] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at System.Lazy`1[T].ExecutionAndPublication (System.LazyHelper executionAndPublication, System.Boolean useDefaultConstructor) [0x00030] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at System.Lazy`1[T].CreateValue () [0x0008c] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at System.Lazy`1[T].get_Value () [0x00018] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at YaR.Clouds.Common.Cached`1[T].RefreshValueIfNeeded () [0x00091] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Common.Cached`1[T]..ctor (System.Func`2[T,TResult] valueFactory, System.Func`2[T,TResult] duration) [0x0001f] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Repos.MailRuCloud.OAuth..ctor (YaR.Clouds.Base.Requests.HttpCommonSettings settings, YaR.Clouds.Base.IBasicCredentials creds, YaR.Clouds.Base.AuthCodeRequiredDelegate onAuthCodeRequired) [0x00026] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Repos.MailRuCloud.WebBin.WebBinRequestRepo..ctor (YaR.Clouds.CloudSettings settings, YaR.Clouds.Base.IBasicCredentials creds, YaR.Clouds.Base.AuthCodeRequiredDelegate onAuthCodeRequired) [0x00068] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Repos.RepoFabric.Create () [0x00062] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Account..ctor (YaR.Clouds.CloudSettings settings, YaR.Clouds.Base.Credentials credentials) [0x00024] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Cloud..ctor (YaR.Clouds.CloudSettings settings, YaR.Clouds.Base.Credentials credentials) [0x0001f] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.WebDavStore.CloudManager.CreateCloud (System.Net.HttpListenerBasicIdentity identity) [0x00031] in <26847e0c30fb44b8a461a758a3b67051>:0 
  at YaR.Clouds.WebDavStore.CloudManager.Instance (System.Security.Principal.IIdentity identityi) [0x0004f] in <26847e0c30fb44b8a461a758a3b67051>:0 
  at YaR.Clouds.WebDavStore.StoreBase.LocalStore.GetItemAsync (NWebDav.Server.WebDavUri uri, NWebDav.Server.Http.IHttpContext httpContext) [0x000ef] in <26847e0c30fb44b8a461a758a3b67051>:0 
  at NWebDav.Server.Handlers.PropFindHandler.HandleRequestAsync (NWebDav.Server.Http.IHttpContext httpContext, NWebDav.Server.Stores.IStore store) [0x00183] in <3d5abdb9d35747b5aab48add8e3a803c>:0 
  at NWebDav.Server.WebDavDispatcher.DispatchRequestAsync (NWebDav.Server.Http.IHttpContext httpContext) [0x00324] in <3d5abdb9d35747b5aab48add8e3a803c>:0 
---> (Inner Exception #0) System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
File name: 'System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
  at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract (System.Type objectType) [0x00007] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract (System.Type objectType) [0x0010f] in <dd21e08747d94bcebed8b56112226337>:0 
  at System.Collections.Concurrent.ConcurrentDictionary`2[TKey,TValue].GetOrAdd (TKey key, System.Func`2[T,TResult] valueFactory) [0x0003d] in <3b2440cf1dce4a7fb10dc5c4f7a3bd72>:0 
  at Newtonsoft.Json.Utilities.ThreadSafeStore`2[TKey,TValue].Get (TKey key) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract (System.Type type) [0x0000b] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContract (System.Type type) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe (System.Type type) [0x0000b] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Boolean checkAdditionalContent) [0x0000e] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00054] in <dd21e08747d94bcebed8b56112226337>:0 
  at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0
  at Newtonsoft.Json.JsonSerializer.Deserialize[T] (Newtonsoft.Json.JsonReader reader) [0x00000] in <dd21e08747d94bcebed8b56112226337>:0 
  at YaR.Clouds.Base.Requests.BaseRequestJson`1[T].DeserializeMessage (System.Collections.Specialized.NameValueCollection responseHeaders, System.IO.Stream stream) [0x00024] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Requests.BaseRequest`2[TConvert,T].MakeRequestAsync () [0x00216] in <0d950eb44acc43c686428ec322c2242d>:0 
  at YaR.Clouds.Base.Repos.MailRuCloud.OAuth.Auth () [0x00093] in <0d950eb44acc43c686428ec322c2242d>:0 <---

Помогите, пожалуйста, что именно ему не нравится?

P. S.
Если я подключаюсь к облаку mail.ru напрямую, проблем нет.

@ZZZConsulting
Copy link
Contributor

Я не спец в линуксе, но насколько я знаю, там до .NETCore был только Mono.
А судя по сообщению
Could not load file or assembly 'System.Runtime.Serialization, Version=4.0.0.0... or one of its dependencies
программа пытается найти сборку от .NET Framework, который есть только для Windows.
Вы не архив ли для версии .NET 4.8 взяли? Он только для Windows подходит. Для иксов нужен .Net 5 и выше, на кройняк Core 3.1 или Mono.
Хотя я могу и ошибаться.

@Vatovv
Copy link
Author

Vatovv commented Dec 4, 2023

Вы не архив ли для версии .NET 4.8 взяли? Он только для Windows подходит. Для иксов нужен .Net 5 и выше, на кройняк Core 3.1 или Mono. Хотя я могу и ошибаться.
Именно этот архив я и взял, потому что только из него программа запустилась на моем линуксе.
Если взять архив .Net5, то

mono ./wdmrc.exe -p 3332
Cannot open assembly './wdmrc.exe': File does not contain a valid CIL image.

@ZZZConsulting
Copy link
Contributor

Насколько я в курсе, проект Mono развивался даже не сколько отдельно, сколько вопреки MS, и только когда ушел Балмер с поста CEO, MS, наконец, перестала считать .net только для Windows и стала делать под linux.
То есть mono, это как раз для версий типа той же .NET Framework 4.8.
Для более поздних уже не mono нужно, а полноценный .NET, вот например тут
https://dotnet.microsoft.com/en-us/download/dotnet/6.0
6-я версия. Чуть ниже заголовка .NET Runtime 6.0.25
есть
Linux Package manager instructions Arm32 | Arm32 Alpine | Arm64 | Arm64 Alpine | x64 | x64 Alpine
Я не в курсе, просто предполагаю, может ларчик просто открывается, взять и поставить нужную сборку .NET для Linux, а потом запустится нормально версия эмулятора? Или это не вариант?

Теоретически, можно собрать нужный комплект сборок типа System.Runtime.Serialization, Version=4.0.0.0
чтобы версия для .NET 4.8 запустилась, но подобной экзотикой мало кто занимается.
Могу предположить, что проще всего взять машину с Windows, где этот самый 4.8 уже стоит и забрать оттуда все сборки из GAC и не только. Но вариант с каким-нибудь .NET Runtime 6.0.25 для Linux выглядит и лучше, и проще.

@Vatovv
Copy link
Author

Vatovv commented Dec 6, 2023

@ZZZConsulting Спасибо. Поставил на тест dotnet6
Таким образом программа запустилась, но чего-то пароль не хочет принимать. Выдаёт сообщение, что логин или пароль неверный, даже если он верный

@ZZZConsulting
Copy link
Contributor

Маленькая ремарка

Пароль для Disk.Yandex.Ru

При обращении к Disk.Yandex.Ru через эмулятор WEBDAV, всегда следует указывать основной пароль учетной записи.
Не работает, если использовать пароль, созданный в Пароли приложений.

Пароль для Cloud.Mail.Ru

При обращении к Cloud.Mail.Ru через эмулятор WEBDAV работают пароли, созданные в Пароли для внешних приложений.
Рекомендуется использовать такой пароль.

Как я понял, нужен именно mail.ru. В таком случае стоит попробовать создать пароль в Пароли для внешних приложений и попробовать с ним. Сейчас какая-то повальная щепетильность по части используемых паролей пошла.

@Vatovv
Copy link
Author

Vatovv commented Dec 6, 2023

И то и другое пробовал - результат один

@ZZZConsulting
Copy link
Contributor

А сообщение об ошибке можно? Может намекнет что.

@ZZZConsulting
Copy link
Contributor

И еще один вопрос - сборка эмулятора из какого проекта - от YaR229 или от ZZZConsulting?
Если сборка от YaR229, то с mail.ru действительно может быть засада, там надо кое-что поменять чтобы заработало. В таком случае могу только рекомендовать попробовать эту сборку
https://github.com/ZZZConsulting/WebDavMailRuCloud/releases

@Vatovv
Copy link
Author

Vatovv commented Dec 6, 2023

@ZZZConsulting
Да, спасибо ещё раз. Используя Вашу сборку всё ОК, но Вы же сами писали, что она в меньшей степени покрыта тестами, чем сборка от YaR229

@ZZZConsulting
Copy link
Contributor

Так я ж её под себя и проверяю в первую очередь, а дальше - как руки дойдут.
Кто ж мешает под себя ее проверить?
Больше половины функционала эмулятора мной вообще не востребована. Но из той, что востребована, у меня работает стабильно и без ошибок.

@ZZZConsulting
Copy link
Contributor

И раз уж про это зашла речь.
Проверять скачиванием и сравнением то, что было залито на сервер - штука нужная и обязательная.
В пример тому - Disk от Мегафона, который через несколько месяцев хранения просто взял и безвозвратно испортил файлы. Впечатление было такое, что он их хранил в зашифрованном виде все, а от части файлов ключи потерял.
Бывает и другое. Чтобы не сто-тысяч-миллионов файлов на сервер заливать, что долго, лучше одним архивом, да с дополнительной информацией для восстановления. Вот так вот работало все без сбоев, а на 6-м году жизни ПК с переходом с формата RAR4 на RAR5 выяснилось, что память дает сбои с отдельных битах - просто 1 заменяется на 0 или наоборот. Тестированием архивов WinRar такое выявил. Проявлялось исключительно при паковке в RAR5 и редко-редко при копировании файлов. Так вот, чтобы порчу при копировании через память выявить нужны контрольные суммы. Периодически пересчитывать у хранимых своих архивов и сравнивать.
Так что программы программами, а меры предосторожности по правильному хранению никто еще не отменял, как и правило 3-2-1 для бэкапов.

@Vatovv
Copy link
Author

Vatovv commented Dec 6, 2023

Так я ж её под себя и проверяю в первую очередь, а дальше - как руки дойдут. Кто ж мешает под себя ее проверить? Больше половины функционала эмулятора мной вообще не востребована. Но из той, что востребована, у меня работает стабильно и без ошибок.

Ну в целом я-то использую вообще только основной функционал: скачивание/закачка файлов.

И раз уж про это зашла речь. Disk от Мегафона, который через несколько месяцев хранения просто взял и безвозвратно испортил файлы.

За mail.ru вроде такое не замечено. Пользуюсь их облаком с момента релиза и не заметил битых файлов, хотя опять же я не проверяю контрольные суммы у всех своих файлов.

Лучше одним архивом, да с дополнительной информацией для восстановления.

Знаете, чем это не удобно? В конечном итоге-то нужны именно оригинальные файлы из архива и начинается: распаковка архива, поиск нужных файлов, копирование в другое место, удаление распакованного архива. Гораздо проще всё хранить в распакованном виде и не тратить время на скачивание 90% бесполезной инфы. Я так и делаю. Конечно в этом есть свои минусы. Вы их и описали.

Вот так вот работало все без сбоев, а на 6-м году жизни ПК с переходом с формата RAR4 на RAR5 выяснилось, что память дает сбои с отдельных битах - просто 1 заменяется на 0 или наоборот. Тестированием архивов WinRar такое выявил. Проявлялось исключительно при паковке в RAR5 и редко-редко при копировании файлов.
Это ещё больший оффтоп, но такое вылавливается memtest. У меня было такое, что только при определённых проерках выявлялись ошибки памяти и это не простое заполнение памяти нулями или единицами.

Так вот, чтобы порчу при копировании через память выявить нужны контрольные суммы. Периодически пересчитывать у хранимых своих архивов и сравнивать. Так что программы программами, а меры предосторожности по правильному хранению никто еще не отменял, как и правило 3-2-1 для бэкапов.
Полностью согласен.

@Vatovv
Copy link
Author

Vatovv commented Dec 6, 2023

Так я ж её под себя и проверяю в первую очередь, а дальше - как руки дойдут. Кто ж мешает под себя ее проверить? Больше половины функционала эмулятора мной вообще не востребована. Но из той, что востребована, у меня работает стабильно и без ошибок.

Ну в целом я-то использую вообще только основной функционал: скачивание/закачка файлов.

И раз уж про это зашла речь. Disk от Мегафона, который через несколько месяцев хранения просто взял и безвозвратно испортил файлы.

За mail.ru вроде такое не замечено. Пользуюсь их облаком с момента релиза и не заметил битых файлов, хотя опять же я не проверяю контрольные суммы у всех своих файлов.

Лучше одним архивом, да с дополнительной информацией для восстановления.

Знаете, чем это не удобно? В конечном итоге-то нужны именно оригинальные файлы из архива и начинается: распаковка архива, поиск нужных файлов, копирование в другое место, удаление распакованного архива. Гораздо проще всё хранить в распакованном виде и не тратить время на скачивание 90% бесполезной инфы. Я так и делаю. Конечно в этом есть свои минусы. Вы их и описали.

Вот так вот работало все без сбоев, а на 6-м году жизни ПК с переходом с формата RAR4 на RAR5 выяснилось, что память дает сбои с отдельных битах - просто 1 заменяется на 0 или наоборот. Тестированием архивов WinRar такое выявил. Проявлялось исключительно при паковке в RAR5 и редко-редко при копировании файлов.

Это ещё больший оффтоп, но такое вылавливается memtest. У меня было такое, что только при определённых проерках выявлялись ошибки памяти и это не простое заполнение памяти нулями или единицами.

Так вот, чтобы порчу при копировании через память выявить нужны контрольные суммы. Периодически пересчитывать у хранимых своих архивов и сравнивать. Так что программы программами, а меры предосторожности по правильному хранению никто еще не отменял, как и правило 3-2-1 для бэкапов.

Полностью согласен.

@Vatovv Vatovv closed this as completed Dec 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants