Я использую ASP.NET Core. Я хочу использовать HttpClient
, но я заметил, что предлагаются два пакета NuGet. Какой из них я использую?System.Net.Http vs Microsoft.Net.Http
ответ
В зависимости от версии. Старые System.Net.Http
пакеты (в 2.0 них) являются устаревшие пакеты, которые устаревшее в пользу Microsoft.Http.Net
согласно описанию:
Наследства пакет, System.Net.Http теперь входит в «Microsoft.Net.Http пакет.
Они существуют, чтобы предоставить HttpClient
в предыдущих версиях .NET и портативных классах. В этом случае вы должны использовать Microsoft.Net.Http
.
Поскольку вы используете .NET Core, вы должны использовать последний пакет System.Net.Http
(например, 4.3.3).
Обновлено для csproj
По .NET Standard 2.0, пакет System.Net.HttpClient
уже включен и доступен, когда вы целевой netstandard2.0
. Если по каким-то причинам вы все еще хотите, чтобы ссылаться на него как для полной версии .NET и .NET Ядра Вы можете добавить это в файл csproj:
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<!-- // HttpClient for full .NET -->
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
<!-- // HttpClient for .NET Core -->
<PackageReference Include="System.Net.Http" Version="4.3.3" />
</ItemGroup>
Если вы используете project.json
Если ваш проект.json нацелен как на полный .NET, так и на .NET Core, вам необходимо добавить узел System.Net.Http
в элемент frameworkAssemblies
. Например:
"frameworks": {
"net451": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0" // HttpClient for full .NET
}
},
"netstandard1.3": {
"dependencies": {
"System.Net.Http": "4.1.0", // HttpClient for .NET Core
}
}
}
Имейте в виду, что они не имеют такого же поведения. Полная версия .NET (4.0.0.0) не выполняет автоматическое сжатие, тогда как .NET Core версии (4.1.0). Поэтому, если вы используете полную версию .NET, вы должны вручную настроить обработчик для использования сжатия gzip/deflate. Описание: https://github.com/dotnet/docs/issues/1054 –
Этот ответ подводит итог тому, что из этого стало с .NET Core, .NET Standard и .NET Framework. – Vincent
@ vincent Это больше не боль в заднице, чем когда люди пользовались моно и т. Д. На мультиплатформе всегда есть некоторые болевые точки. – rolls
Microsoft.Net.Http
требует дополнительных Microsoft.Bcl
зависимостей.
Для этого, если вы нацелены только на платформу .NET Framework или .NET Core, System.Net.Http
- это хорошо. В противном случае Microsoft.Net.Http
будет лучшим выбором, поскольку это может быть следующее поколение.
Кажется, что MS изменила свое мнение, поскольку это сообщение ссылается на ... https: //stackoverflow.com/questions/39016373/the-current-status-of-system-net-http-vs-microsoft-net-http microsoft .net.http не обновлялся с 2015 года, а system.net.http - всего несколько месяцев sago (nuget). – smoore4
- 1. Текущее состояние System.Net.Http против Microsoft.Net.Http
- 2. Microsoft.Net.Http vs Microsoft.AspNet.WebApi.Client
- 3. VS 2017 RC asp.net core system.net.http проблема с конфликтом
- 4. Не удалось найти пакет 'Microsoft.Net.Http' в VS 2013
- 5. 5 Библиотеки .NET HTTP - где подходит Microsoft.Net.Http?
- 6. System.Net.Http отсутствует?
- 7. Распространение System.Net.Http
- 8. System.Net.Http отсутствует
- 9. Невозможно установить Microsoft.Net.Http через Nuget
- 10. Ошибка System.net.http в Xamarin.Android
- 11. Ошибка обновления System.Net.Http
- 12. System.Net.Http не удалось загрузить
- 13. HttpRequestMessage не найден, но System.Net.Http ссылается
- 14. 'System.Net.Http' уже имеет зависимость, определенную для 'System.Runtime'
- 15. Отправить файл на обслуживание с помощью Microsoft.Net.Http
- 16. HttpFormUrlEncodedContent не является частью system.Net.Http
- 17. Исключение в xamarin.forms в System.Net.Http
- 18. Почему System.Net.Http HttpClient кодирует мой URL-адрес запроса?
- 19. system.net.http не найден в Xamarin Forms
- 20. KPM восстановить не удалось найти System.Net.Http
- 21. Невозможно найти System.Net.Http в проекте веб-сайта
- 22. Использование методов System.Net.Http в ASP.NET 5?
- 23. Web Api: System.Net.Http версия 2.0.0.0 не найден
- 24. Почему существует пространство имен System.Net.Http и System.Web.Http?
- 25. Невозможно построить SignalR.Android из-за отсутствия System.Net.Http
- 26. Неверная версия System.Net.Http на сервере сборки
- 27. System.Net.Http не удалось разрешить в целевой среде .NET 4.0
- 28. Использовать прокси в C# Portable Class Library (Microsoft.Net.Http)
- 29. Portable Microsoft.Net.Http ссылка на объект ошибка postAsync в Silverlight 5
- 30. Как отправить запрос cURL, показанный ниже, используя System.Net.Http?
Похоже, что 'System.Net.Http' зависит от' Microsoft.Net.Http'. Но опять же, это зависит от того, что вы пытаетесь сделать с вашим приложением. –