Подтвердить что ты не робот

HttpClient в ASP.NET 5.0 не найден?

Используя VS2015 и asp.net 5, когда я пытаюсь скомпилировать свой сайт с помощью экземпляра System.Net.HttpClient, он сообщает мне:

Не удалось найти имя типа или пространства имен "HttpClient" (вы отсутствует директива using или ссылка на сборку?)

Наведите курсор на код нарушения, я вижу:

"WebApplication1.ASP.NET 5.0 - Available"
"WebApplication1.ASP.NET Core 5.0 - Not Available"

У меня есть 2 фреймворка, перечисленных в файле project.json:

"frameworks": {
    "aspnet50": { },
    "aspnetcore50": { }
},

Я предполагаю, что один из них несет ответственность за отсутствие сборки, но я действительно не знаю, как ее исправить или как это работает.

Как я могу заставить сайт работать с HttpClient вместо того, чтобы бросать ошибки? Оскорбительный метод опубликован ниже:

private async Task<string> GetStringFromUri()
{
    using (var httpClient = new HttpClient())
    {
        result = await httpClient.GetStringAsync(
        new Uri("http://baconipsum.com/api/?type=meat-and-filler"));

        viewModel= result;
        return viewModel;
    }
}
4b9b3361

Ответ 1

Наконец, все получилось. @yuval поставил меня на правильный путь с его ответом о добавлении зависимостей и указав, что класс существует в github. Дальнейший поиск заставил меня понять, что класс, похоже, пока не включен в предварительный выпуск, и мне пришлось добавить это нерегулярное репо к моему проекту: https://www.myget.org/gallery/aspnetvnext

В этом репо есть ночные сборки пакетов asp.net vnext nuget, в которых содержится класс, который я хочу. Добавив следующую строку в раздел основных зависимостей и в оба раздела зависимостей фреймворков, это помогло мне: "Microsoft.Net.Http.Client": "1.0.0.0-rc1-10049"

"dependencies": {
    [...],
    "Microsoft.Net.Http.Client": "1.0.0.0-rc1-10049"
},
"frameworks": {
    "aspnet50": {
        "dependencies": {
            "Microsoft.Net.Http.Client": "1.0.0-rc1-10049"
        }
    },
    "aspnetcore50": {
        "dependencies": {
            "Microsoft.Net.Http.Client": "1.0.0-rc1-10049"
        }
    }
} 

Ответ 2

Сегодня я столкнулся с той же проблемой, и в 2016 году решение стало несколько проще.

Нет необходимости добавлять новый репозиторий Nuget.

При добавлении System.Net.Http (текущая версия 4.0.1-бета-23516) вы все равно получите ту же ошибку, если вы настроите таргетинг на clr, а также на версию основного фреймворка, поэтому вам нужно скопировать зависимость в dnxcore Framework, чтобы получить компиляцию кода.

До:

"frameworks": {
    "dnx451": { 
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
     },
    "dnxcore50": { }
  }

После:

"frameworks": {
    "dnx451": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    }
  }

Ответ 3

Вам нужно добавить новый источник в менеджер пакетов nuget (https://www.myget.org/F/aspnetvnext), а затем добавить зависимости к вашему файлу project.json. И для dnx451, и dnxcore50:

{
   "frameworks": {
       "dnx451": {
         "frameworkAssemblies": {
             "Microsoft.Net.Http.Client": "1.0.0-beta3-10053"
              }
         },
         "dnxcore50": {
            "frameworkAssemblies": {
               "Microsoft.Net.Http.Client": "1.0.0-beta3-10053"
               }
          }
 }

Он реализован как часть пакета ASP.Net xNext, поскольку они указывают на github:

Полностью управляемая реализация HttpMessageHandler на основе сокетов.

Этот проект является частью ASP.NET vNext. Вы можете найти образцы, документация и инструкции по началу работы для ASP.NET vNext at Home repo.

Здесь вы можете найти полное описание здесь

Ответ 4

Сегодня мне не удалось найти RC1:

Для тех, кто находит этот вопрос оттуда, HttpClient теперь находится в пространстве имен System.Net.Http.

Ответ 5

Просто добавьте это в свой project.json

"dependencies": {
    ...
    "Microsoft.Net.Http": "2.2.7-beta"
},

или независимо от последней версии.

Ответ 6

В этом потоке отсутствовала ссылка... вам нужно добавить источник https://www.myget.org/gallery/aspnetvnext NuGet, но фактический URL-адрес канала NuGet для этого: https://www.myget.org/F/aspnetvnext/ '. Как только у вас это будет в качестве источника самородок, все остальное оживет.

Кроме того, на момент написания (17 июня 2015 года) версия "Microsoft.Net.Http.Client": "1.0.0-beta3-10053".

Вам также понадобится обновить раздел 'frameworks' от Matt DeKreys edit 7 июня (dnx451 и dnxcore50)