2015-05-14 23 views
26

Esiste un modo per utilizzare uno WebClient in un'applicazione .NET Core? Se io costruisco l'applicazione ottengo il seguente errore:Come utilizzare WebClient con .NetCore?

Severity Code Description Project File Line 
Error CS0246 The type or namespace name 'WebClient' could not be found (are you missing a using directive or an assembly reference?) 

Credo WebClient non è una parte di .NET core, ma c'è alcuna alternativa?

+5

Non vedo 'WebClient' ogni dove nel repository corefx,' HttpClient' sarebbe probabilmente l'alternativa. –

+2

Ho aggiunto "Microsoft.Net.Http.Client": "1.0.0-beta3-10053" in project.json e posso creare un'istanza di un nuovo HttpClient. E funziona anche con. NetCore. Forse è l'unico scopo per gestire questo. – TimBoss

+0

Possibile duplicato di [System.Net.Webclient non funzionante 'WebClient' non è stato trovato] (http://stackoverflow.com/questions/19164900/system-net-webclient-not-working-webclient-could-not-be -fondato) –

risposta

26

A partire da .Net Standard 2.0, WebClient è ora disponibile per qualsiasi implementazione dello standard, incluso .Net Core. Tuttavia, la domanda Stack Overflow "Need help deciding between HttpClient and WebClient" ha alcune risposte abbastanza buone sul motivo per cui dovresti utilizzare lo HttpClient.

Uno degli svantaggi citati è che non vi è alcuna segnalazione di avanzamento incorporata nello HttpClient. Tuttavia, poiché sta utilizzando gli stream, è possibile scrivere i propri. Le risposte a "How to implement progress reporting for Portable HttpClient" forniscono un esempio per riportare l'avanzamento del flusso di risposta.

Se si stanno prendendo di mira versioni precedenti dello standard, sarà necessario utilizzare HttpClient poiché WebClient non è disponibile prima di .Net Standard 2.0.

+0

Dovrebbe essere costruito su System.Net.Http nella versione 1.2.0 https://github.com/dotnet/corefx/issues/11794 – arielorvits