
This article was written in 2019. Versions, tools and recommendations may have changed since then. Newer posts are collected under .NET.
The most current and currently recommended way to download .NET Framework, .NET Standard or .NET Core files from the Internet is the HttpClient class.
To use the HttpClient class, the NuGet package System.Net.Http is required.
<PackageReference Include="System.Net.Http" Version="4.3.4" /> 1
2public class DownloadFileSample
3{
4 // define HttpClient as static and re-use instance
5 private static readonly HttpClient _httpClient = new HttpClient();
6
7 public async Task<YourReturnHere> DownloadFile(string url)
8 {
9 // executes a HTTP "GET" request
10 HttpResponseMessage response = await _httpClient.GetAsync(url);
11
12 // download contents as string
13 string responseBody = await response.Content.ReadAsStringAsync();
14
15 // download contents as byte array
16 string responseBody = await response.Content.ReadAsByteArrayAsync();
17
18 // use contents as stream
19 string responseBody = await response.Content.ReadAsStreamAsync();
20 }
21}As you can see, the HttpClient or the Response offers several ways to handle the content: String, Byte Array or directly as stream. Make sure to use the appropriate way at this point. This improves performance.
Related articles

- 16 min read
Production Rate Limiting in ASP.NET Core
Most ASP.NET Core rate-limiting examples stop after registering a fixed window. That is enough to demonstrate the middleware, but it is not …

- 11 min read
The Big Decimal Bugfix with .NET 11
For more than two decades, (decimal)1.23 returned 1.23m. It looked correct, it passed every test and it was a polite lie.

- 10 min read
Distroless, Chiseled or Alpine: Choosing a .NET Base Image
Distroless, Chiseled and Alpine are often compared as three equivalent Linux distributions. They are not. Alpine is a distribution built …
Let's Work Together
Looking for an experienced Platform Architect or Engineer for your next project? Whether it's cloud migration, platform modernization or building new solutions from scratch - I'm here to help you succeed.
