Sto usando il nucleo di ASP.NET. Voglio usare HttpClient
ma ho notato che ci sono due pacchetti NuGet offerti. Quale uso?System.Net.Http vs Microsoft.Net.Http
risposta
dipende dalla versione. Le vecchie System.Net.Http
pacchetti (le 2.0 quelli) sono pacchetti legacy, che sono deprecati in favore di Microsoft.Http.Net
secondo la descrizione:
pacchetto Legacy, System.Net.Http è ora incluso nel 'Microsoft.Net.Http 'pacchetto.
Esistono per fornire lo HttpClient
nelle precedenti versioni di .NET e librerie di classi portatili. In questo caso dovresti usare Microsoft.Net.Http
.
Poiché si utilizza .NET Core, è necessario utilizzare l'ultimo pacchetto System.Net.Http
(ad esempio 4.3.3).
aggiornato per csproj
Come di .NET 2.0 standard, il pacchetto System.Net.HttpClient
è già incluso e disponibile quando si target netstandard2.0
. Se per qualche ragione si vuole ancora fare riferimento a esso sia pieno .NET e .NET core è possibile aggiungere questo al file 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>
Se stai usando project.json
Se project.json ha come target sia .NET che .NET Core completi, è necessario aggiungere l'assembly System.Net.Http
all'elemento frameworkAssemblies
. Per esempio:
"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
}
}
}
Ricorda che non hanno lo stesso identico comportamento. La versione .NET completa (4.0.0.0) non esegue la compressione automatica, mentre la versione .NET Core (4.1.0) lo fa. Pertanto, se si utilizza la versione .NET completa, è necessario configurare manualmente il gestore per utilizzare la compressione gzip/deflate. Descrizione: https://github.com/dotnet/docs/issues/1054 –
Questa risposta riassume ciò che è diventato un disordine con .NET Core, .NET Standard e .NET Framework. – Vincent
@vincent Non è più un rompicoglioni che il passato quando le persone usano il mono, ecc. La multi piattaforma ha sempre alcuni punti deboli. – rolls
Microsoft.Net.Http
richiede ulteriori Microsoft.Bcl
dipendenze.
Per questo, se si è interessati solo a .NET Framework o .NET Core, System.Net.Http
è tutto a posto. Altrimenti, Microsoft.Net.Http
sarebbe una scelta migliore in quanto potrebbe essere la prossima generazione.
Sembra che la SM abbia cambiato idea quando questo post allude a ... https: //stackoverflow.com/questions/39016373/the-current-status-of-system-net-http-vs-microsoft-net-http microsoft .net.http non è stato aggiornato dal 2015 mentre system.net.http è solo qualche mese sago (nuget). – smoore4
Sembra che 'System.Net.Http' dipenda da' Microsoft.Net.Http'. Ma poi di nuovo, dipende da cosa stai provando a fare con la tua applicazione. –