In this article I will explain with an example, how to download JSON file from URL in ASP.Net Core (.Net Core) Razor Pages.
Note: For beginners in ASP.Net Core (.Net Core 7) Razor Pages, please refer my article ASP.Net Core 7 Razor Pages: Hello World Tutorial with Sample Program examples.
 
The JSON file will be downloaded from the URL using WebClient class and then will be saved in a Folder (Directory).
 
 

JSON File URL

The following JSON file will be used in this article.
[
 {
    "CustomerId": 1,
    "Name""John Hammond",
    "Country""United States"
 },
 {
    "CustomerId": 2,
    "Name""Mudassar Khan",
    "Country""India"
 },
 {
    "CustomerId": 3,
    "Name""Suzanne Mathews",
    "Country""France"
 },
 {
    "CustomerId";: 4,
    "Name""Robert Schidner",
    "Country""Russia"
 }
]
 
 

Namespaces

You will need to import the following namespace.
using System.Net;
 
 

Razor PageModel (Code-Behind)

The PageModel consists of following Handler method.

Handler method for handling GET operation

Inside this Handler method, the JSON file is downloaded from the URL using DownloadFile method of the WebClient class.

DownloadFile method

It accepts the following two parameters:
address – The URL of the file to be downloaded.
fileName – Path of the Folder (Directory) where the file will be downloaded.
Note: SecurityProtocol needs to be set to TLS 1.2 (3072) in order to call an API. For more details on SecurityProtocol, please refer my article, Using TLS1.2 in .Net 2.0, .Net 3.0, .Net 3.5 and .Net 4.0.
 
public class IndexModel : PageModel
{
    public void OnGet ()
    {
        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
        WebClient webClient = new WebClient();
        webClient.DownloadFile("https://raw.githubusercontent.com/aspsnippets/test/master/Customers.json", @"D:\Files\Customers.json" );
    }
}
 
 

Razor Page (HTML)

HTML Markup

There is no coding part in Razor Page. Hence, it is skipped.
@page
@model Download_JSON_URL_Core_Razor.IndexModel
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
</body>
</html>
 
 

Screenshot

The downloaded JSON file

ASP.Net Core Razor Pages: Download JSON File form URL
 

Downloads