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;
}
}
Ответы
Ответ 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)