Не удалось загрузить тип ‘System.Net.Http.FormattingUtilities’

#c# #android #.net #xamarin.android

#c# #Android #.net #xamarin.android

Вопрос:

В проекте PCL для Xamarin.Проект Android, я получаю следующую ошибку, когда я делаю a httpClient.PostAsJsonAsync() или a httpClient.PutAsJsonAsync() .

Ошибка:

System.TypeLoadException: Could not load type 'System.Net.Http.FormattingUtilities' from assembly 'System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Эта ошибка возникает в этом коде:

 public async Task<User> CreateUser(string name, string email, string password)
    {
        try
        {
            User user = new User();
            user.Name = name;
            user.Email = email;
            user.Password = password;

            var response = await _client.PostAsJsonAsync("myUrl", user); // error on this line
            string content = await response.Content.ReadAsStringAsync();

            return string.IsNullOrEmpty(content) ? new User() :
                JsonConvert.DeserializeObject<User>(content);
        }
        catch (JsonReaderException ex)
        {
            throw ex;
        }
        catch (WebException ex)
        {
            throw ex;
        }
        catch (Exception ex)
        {
            throw ex; // ex is null here
        }
}
  

Комментарии:

1. попробуйте удалить все файлы из папок package и bin и obj в вашем web.ui proj (или с другими именами, только для внешнего интерфейса проекта)

2. или добавление конфигурации зависимостей сборки в <assemblyBinding/>, например <dependentAssembly> <assemblyIdentity name=»System.Web.Http» PublicKeyToken=»31bf3856ad364e35″ culture=»нейтральный» /> <Привязка к прямой старой версии=»0.0.0.0-5.2.2.0″ newVersion=»5.2.2.0″ /> </dependentAssembly>

3. @NathanGong, нет, это не сработало.

4. Как насчет удаления и повторной установки с помощью nuget?

5. @NathanGong, да, но это не сработало. Я добавил System.Net.Http.Formatting.Extension пакет nuget. Это правильный вариант? Или я должен добавить Microsoft.AspNet.WebApi.Client ?

Ответ №1:

Я сдаюсь.

Я изменил его на:

 string json = JsonConvert.SerializeObject(user);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _client.PostAsync(myUrl, stringContent);
  

Теперь это работает.