Xamarin droid вызывает проблемы при расширении HTTPContent

Мой вопрос является продолжением: Как я могу рассчитать прогресс с помощью HttpClient PostAsync ?

Это решение работает отлично. Просто помните, что если вы используете Xamarin, необходимо включить пакет nuget Microsoft.Net.Http в проект .iOS, иначе вы получите исключение TypeLoadException при инициализации этого класса. Davide Vosti 27 окт. 2015, в 06:47

Я работаю с проектом Xamarin PCL. Это отлично работает на iOS.

У меня проблемы с дроидом. Я нацелен на 4.4, однако пакет дроидов MSFT HTTP.Net нацелен на 7.1, и я получаю ожидаемое исключение TypeLoadException. Любые обходные пути (которые держат меня на 4.4)?

Спасибо д


person user7338313    schedule 21.08.2017    source источник
comment
Почему вы добавляете этот пакет? В профили Mondern PCL и .NET Standard встроен System.Net.Http. Следовательно, нет необходимости добавлять этот пакет.   -  person Cheesebaron    schedule 22.08.2017
comment
Без пакета виртуальная таблица для перегрузок испорчена. Таким образом, причина добавления пакета решает проблему в iOS и Android (при условии, что я хотел пожертвовать ~87% пользовательской базы Android).   -  person user7338313    schedule 25.08.2017
comment
Вы делаете что-то действительно странное, если получаете эти ошибки vtable....   -  person Cheesebaron    schedule 25.08.2017


Ответы (1)


Не ответ на вопрос, но сегодня я столкнулся с той же проблемой, пытаясь добавить поддержку прогресса загрузки, расширив HttpContent, используя Xamarin с основным проектом PCL и Xamarin Android (есть также проект iOS, использующий ядро). Я добавляю некоторые дополнительные детали в этот пост, а не создаю дубликат сообщения SO.

Когда я попробовал любое из предложенных решений на StackOverflow (включая то, на которое ссылался исходный постер), которые простираются от HttpContent, я получаю исключение:

System.TypeLoadException: Type Test.Project.FileService+CustomStream has invalid vtable method slot 6 with method none

Я предполагаю, что это та же проблема, которую они видят. Я не включаю Microsoft.Net.Http в проект PCL/Android, но мы используем System.Net и т.д.

Когда я вместо этого попытался получить производный от StreamContent, хотя это не привело к сбою, точки останова сработали только для конструктора и TryComputeLength, но не для SerializeToStreamAsync, хотя данные были успешно загружены на сервер без этого.

Это устаревшее приложение, над которым я также работаю для Android 4.4. Хотя в прошлом мне удавалось, чтобы такие вещи работали на конкретной платформе (Xamarin.Android), это было бы гораздо большим изменением в этом приложении, поэтому в идеале хотелось бы, чтобы это работало в PCL.

person SteveC    schedule 22.08.2017
comment
Да, у меня точно такая же ошибка. Прочитав ваш пост, я попробовал переопределить другие дочерние классы. Однако они не создают ошибку ссылки, я думаю, что виртуальная таблица все еще испорчена, поскольку она не привязана к основному исполняемому файлу (я не понимаю, почему это должно быть, но да ладно), и, таким образом, родительский а не наше переопределение называется. - person user7338313; 25.08.2017