ASP.NET Core Practice Test

โ–ถ

Searching for asp.net core 4.0 is common, and the honest answer matters before anything else: there is no product called ASP.NET Core 4.0. Microsoft shipped ASP.NET Core 1.0 in June 2016, followed by 2.0, 3.0, and 3.1. After that, the company dropped the Core label from the runtime name and moved to .NET 5, .NET 6, and onward. The number four never appeared in the ASP.NET Core line, which leaves many developers confused when they hunt for a download.

Searching for asp.net core 4.0 is common, and the honest answer matters before anything else: there is no product called ASP.NET Core 4.0. Microsoft shipped ASP.NET Core 1.0 in June 2016, followed by 2.0, 3.0, and 3.1. After that, the company dropped the Core label from the runtime name and moved to .NET 5, .NET 6, and onward. The number four never appeared in the ASP.NET Core line, which leaves many developers confused when they hunt for a download.

So where does the 4.0 come from? Most of the time it traces back to ASP.NET 4.0, the web framework that shipped with .NET Framework 4.0 in April 2010 and still powers legacy Windows servers today. Others see it in older job posts, legacy project files targeting net40, or tutorials that blur Framework and Core together. These are separate technologies with different runtimes, different installers, and different support timelines, so choosing the wrong one wastes hours.

This guide untangles the version history and shows exactly what to download. You will learn which releases are still supported, how the SDK differs from the runtime and the hosting bundle, and how to confirm what is installed on your machine. If you want a broader reference on asp.net core version downloads, that printable study companion pairs well with the sections below and gives you something to review offline.

The practical stakes are real. Installing an unsupported runtime means no security patches, and picking the wrong target framework can break a build pipeline overnight. In November 2026, both .NET 8 and .NET 9 reach the end of their support windows, so many teams are planning migrations right now. Knowing the naming rules, the release cadence, and the official download sources lets you make that move calmly instead of in a panic.

The article also serves anyone preparing for a certification or a technical interview. Questions about versions, target framework monikers, and long-term support come up constantly in screening rounds, because they reveal whether a developer understands how the platform evolves. Memorizing a handful of dates and rules goes a long way, and the practice quizzes linked throughout the page let you test that knowledge against realistic multiple-choice questions on authentication and configuration.

Here is the short version before we dive deeper. If you are starting a new project today, install the latest long-term support SDK, currently .NET 10, directly from the official dotnet.microsoft.com download page. If you maintain an older application, check its target framework first, then decide whether to upgrade in place or stay on a supported branch for a while. Everything else in this guide is detail that supports those two decisions.

Throughout the article we use plain language and concrete numbers. Release years, support lengths, and command-line checks are included wherever they help. Because Microsoft occasionally extends or shortens a support window, always verify the dates against the official .NET support policy page before you commit to a production plan, a budget request, or a migration schedule that other people depend on.

ASP.NET Core Versions by the Numbers

๐Ÿ“…
2016
ASP.NET Core 1.0 Released
๐Ÿ”ข
0
Releases Named 4.0
๐Ÿ†
10
Latest LTS Release
โฑ๏ธ
3 yrs
LTS Support Window
๐Ÿ”„
1 / yr
New Major Release
Try Free ASP.NET Core 4.0 Era Practice Questions

ASP.NET Core Version History From 1.0 to .NET 10

๐Ÿ“‹

Microsoft released a cross-platform rewrite in June 2016. It introduced Kestrel, a modular pipeline, and built-in dependency injection, and it could run on Windows, Linux, and macOS without the old System.Web library.

โš™๏ธ

Version 2.0 arrived in August 2017 with the Microsoft.AspNetCore.All metapackage, Razor Pages, and faster startup. Releases 2.1 and 2.2 added long-term support, SignalR, and health checks for production hosting.

๐Ÿงฑ

Version 3.0 shipped in September 2019 and dropped support for the .NET Framework runtime. Release 3.1 followed in December 2019 as an LTS version, and it is the last release carrying the Core name in the runtime.

๐Ÿ”€

Microsoft skipped version 4 entirely to avoid confusion with .NET Framework 4.x. The unified platform launched as .NET 5 in November 2020, and ASP.NET Core continued as the web stack on top of it.

๐Ÿ—๏ธ

Minimal APIs, hot reload, and native AOT arrived across these releases. .NET 6 and .NET 8 were long-term support versions, while .NET 7 was a shorter standard-term release with an 18-month life.

๐Ÿš€

.NET 9 arrived in November 2024 and .NET 10 followed in November 2025 as the current LTS. Both continue the annual November cadence that developers can now plan their upgrade calendars around.

Microsoft publishes a clear support policy for every .NET release, and understanding it is the fastest way to choose a download. Long-term support releases, called LTS, receive three years of patches. Standard-term support releases, called STS, historically received eighteen months, though recent releases were extended to twenty-four. Even-numbered versions are the LTS ones, so .NET 6, .NET 8, and .NET 10 are the stable choices for most production systems.

The timeline matters right now. .NET 8 and .NET 9 both reach the end of support in November 2026, which means any application still running on them will stop receiving security fixes after that date. .NET 10, released in November 2025, is supported until November 2028. If your team has not started planning, the practical advice is to pick .NET 10 as the target and schedule the work for the coming quarter.

Older releases are already out of support. ASP.NET Core 2.1 ended in 2021, and ASP.NET Core 3.1 reached its end on December 13, 2022. .NET 5 ended in May 2022, .NET 6 in November 2024, and .NET 7 in May 2024. Running any of these in production exposes you to unpatched vulnerabilities, and many compliance frameworks, including PCI DSS, expect supported software on any system that handles payment data.

For downloads, the single trustworthy source is dotnet.microsoft.com/download. It lists every supported version with installers for Windows, macOS, and Linux, plus ARM64 builds for Apple silicon and Windows on ARM. Each page shows the SDK, the ASP.NET Core runtime, and the desktop runtime separately, along with checksums you can verify. Avoid third-party mirrors and random download sites, which occasionally bundle adware or outdated builds with misleading file names.

Package managers offer a second safe route. On Windows, the winget command installs the SDK with a single line, and on macOS Homebrew provides a cask. Linux users can install from the distribution repositories on Ubuntu, Debian, Fedora, and Red Hat, which keeps patching tied to the system update process. Microsoft also publishes container images under mcr.microsoft.com/dotnet, with separate aspnet, runtime, and sdk tags for each version.

Archived releases are still downloadable for anyone who needs to reproduce an old bug. The official releases index lists every historical build, including ASP.NET Core 1.0 and 2.x, along with their SHA hashes. Use these only inside isolated virtual machines or containers, never on a workstation connected to production secrets, because the runtimes no longer receive fixes and known exploits exist for several of them.

A final point on naming helps when you search. If you type asp.net core 4.0 into a search engine, results often mix ASP.NET 4.0 pages for the old .NET Framework with Core material. Add the exact release you want, such as .NET 10 or ASP.NET Core 8.0, and the results improve immediately. When a tutorial mentions a version, check its publication date, because guides written before 2020 rarely match the tooling you will install today.

ASP.NET Core Authentication & Authorization 1
Practice cookie authentication, JWT bearer tokens, and policy-based authorization with realistic exam-style questions.
ASP.NET Core Authentication & Authorization 2
Test your knowledge of identity, claims, roles, and securing minimal API endpoints in modern releases.

SDK, Runtime, and Hosting Bundle: Which ASP.NET Core Version Download Do You Need?

๐Ÿ“‹ SDK

The SDK is what developers install. It contains the dotnet command line tool, the compiler, MSBuild, project templates, and the runtimes needed to build and run applications locally. If you plan to write code, run dotnet new, or publish a project, this is the download to choose. A single SDK can build for older target frameworks, so installing the newest one is usually enough.

Download size sits around 200 to 250 MB on most platforms, and it installs side by side with earlier SDKs without removing them. When several are present, the dotnet host picks the newest unless a global.json file in your solution folder pins a specific version. Pinning is a smart habit for teams, because it keeps every developer and build server on the same compiler.

๐Ÿ“‹ Runtime

The ASP.NET Core Runtime is for machines that only run applications, such as servers, containers, and test agents. It includes the shared framework with Kestrel and the middleware libraries, but no compiler or templates. Installing it is the correct choice when a deployed app is framework-dependent, because the smaller footprint reduces both the attack surface and the patching work you inherit.

Remember that the plain .NET Runtime is not enough for web apps. Applications using Microsoft.AspNetCore.App need the ASP.NET Core Runtime, which already contains the base runtime. A common error message says that a framework was not found, and the fix is nearly always installing the matching major version, such as 10.0.x, of the ASP.NET Core Runtime on the target machine.

๐Ÿ“‹ Hosting Bundle

The Hosting Bundle is a Windows-only installer for servers running IIS. It installs the .NET Runtime, the ASP.NET Core Runtime, and the ASP.NET Core Module, which lets IIS forward requests to the Kestrel process. Without the module, IIS returns a 500.19 error or a blank page, which is one of the most common mistakes during first-time deployments.

Install IIS first, then run the bundle, and restart the service afterward with net stop was followed by net start w3svc. The bundle does not need to match the SDK version you used, but it must be at least as new as the runtime your app targets. Our guide to hosting on IIS walks through the full configuration in detail.

Should You Upgrade to the Newest ASP.NET Core Version?

Pros

  • You receive security patches for three years on an LTS release such as .NET 10
  • Performance improves with each release, including faster JSON handling and lower memory use
  • New features such as minimal API validation and improved OpenAPI support reduce boilerplate
  • Container images and cloud services target current versions first, so deployment gets easier
  • Hiring is simpler because most candidates learn on the current tooling
  • Staying within one or two versions keeps future migrations small and predictable

Cons

  • Upgrades require testing, and breaking changes can affect middleware, authentication, or serialization
  • Third-party libraries sometimes lag behind and may not support the newest target framework
  • Teams on tight release schedules may struggle to find time for a migration project
  • Hosting providers occasionally need weeks to offer the latest runtime on shared plans
  • Developers must update CI pipelines, Dockerfiles, and global.json pins at the same time
  • Moving from LTS to STS shortens your support window, which may not suit regulated systems
ASP.NET Core Authentication & Authorization 3
Challenge yourself with advanced scenarios covering external providers, token validation, and authorization handlers.
ASP.NET Core Configuration & Environments 1
Review appsettings files, environment variables, user secrets, and how configuration providers are layered.

Checklist: Download and Verify ASP.NET Core Safely

Confirm you actually need ASP.NET Core and not the legacy ASP.NET 4.x framework.
Open dotnet.microsoft.com/download and choose a version marked as supported.
Prefer the latest LTS release, currently .NET 10, for new production projects.
Pick the SDK for development machines and the runtime for servers.
Choose the Hosting Bundle only when deploying behind IIS on Windows.
Compare the downloaded file's SHA-512 hash with the value on the release page.
Run dotnet --list-sdks and dotnet --list-runtimes to confirm what is installed.
Add a global.json file to pin the SDK version for your whole team.
Update your CI pipeline and Dockerfile base images to the same major version.
Calendar the end-of-support date and set a reminder six months ahead.
There Is No ASP.NET Core 4.0

Microsoft went from ASP.NET Core 3.1 straight to .NET 5 so the new platform would not be confused with .NET Framework 4.x. If a download page, course, or job post promises ASP.NET Core 4.0, treat it as a mislabel and ask which product they really mean.

Every project declares what it runs on through a target framework moniker, or TFM, inside the csproj file. For modern ASP.NET Core the values look like net8.0, net9.0, and net10.0. Older ones appear as netcoreapp3.1, while legacy Framework projects use net40, net472, or net48. Seeing net40 in a project file is the real source of many asp.net core 4.0 searches, and it tells you the app is not Core at all.

The moniker controls which runtime the app needs. A project targeting net8.0 will run on any installed 8.0.x runtime, and by default it rolls forward only within the same major version. That means an app built for 8.0 will not start on a server that has only 10.0 unless you set the DOTNET_ROLL_FORWARD environment variable or the RollForward property, which is a useful escape hatch during gradual migrations.

Patch versions matter too. Microsoft ships servicing updates on the second Tuesday of most months, numbered like 10.0.1 and 10.0.2. These contain security and reliability fixes and are safe to install without code changes, since the runtime keeps a strict compatibility promise inside a major version. Teams should treat patch updates as routine maintenance and automate them through base image tags or unattended OS updates.

Choosing between LTS and STS comes down to your operating model. LTS suits enterprise software, line-of-business apps, and anything with a slow release cycle, because it lets you upgrade once every two or three years. STS works for fast-moving products with strong automated tests, where adopting new features quickly is worth a yearly upgrade. When unsure, LTS is the safer default, and most employers expect candidates to know this distinction.

Preview and release candidate builds deserve a warning. Microsoft publishes previews monthly from roughly February to October, and release candidates appear in September and October ahead of the November launch. They are excellent for testing compatibility, but they carry no production support and can change between builds. Never deploy a preview runtime to a customer-facing server, and keep preview SDKs out of your default developer path.

Version numbers also appear in NuGet packages. Packages such as Microsoft.AspNetCore.Authentication.JwtBearer and Microsoft.EntityFrameworkCore follow the platform, so version 10.0.x packages pair with net10.0 projects. Mixing a 6.0 package with a 10.0 project often compiles but produces strange runtime errors. Keep related packages on the same major version, and use Directory.Packages.props to centralize versions across a large solution.

When a question asks which version introduced a feature, anchor your answer to the year. Minimal APIs arrived with .NET 6 in 2021, rate limiting middleware with .NET 7 in 2022, and native AOT support for minimal APIs with .NET 8 in 2023. Linking features to release years gives you an easy memory aid, and it helps you judge quickly whether a tutorial still applies to the version you are actually running.

Many people searching for asp.net core 4.0 actually maintain an ASP.NET 4.x application and want a modern path forward. The old framework runs only on Windows, depends on System.Web and IIS, and ships inside the operating system. It still receives security fixes under the Windows lifecycle for version 4.8, but it gets no new features, and the 4.0 release itself has been out of support since 2016.

Migration is not a simple version bump, because the programming model changed. Global.asax becomes Program.cs, web.config settings move to appsettings.json, and HttpContext.Current disappears in favor of injected services. Web Forms has no direct equivalent at all, so those pages must be rewritten in Razor Pages, MVC, or Blazor. Estimate the effort honestly by counting controllers, modules, handlers, and any third-party controls.

The incremental approach is usually safest. Microsoft documents a strangler pattern in which a new ASP.NET Core application sits in front of the old one and proxies unmigrated routes to it using YARP, the open source reverse proxy. You move one feature at a time, test it in production, and retire the legacy code gradually. This avoids a risky big-bang rewrite that freezes feature work for months.

System.Web adapters help during the transition. They let shared libraries call familiar APIs such as HttpContext and session state from both the old and the new application, so you do not have to duplicate business logic. Start by moving class libraries to .NET Standard 2.0 or directly to a modern target framework, because libraries that compile for both worlds make the later web migration far smaller and easier to review.

Tooling can speed up the early analysis. The .NET Upgrade Assistant and the newer AI-assisted modernization features in Visual Studio scan a solution, flag incompatible APIs, and automate mechanical changes such as updating project files. Treat the output as a starting point, not a finished migration. Always review the generated changes, run your tests, and compare behavior around authentication, caching, and routing, where subtle differences cause the worst surprises.

Authentication deserves special attention. Forms authentication and the older membership providers have no direct Core counterpart, so you will move to ASP.NET Core Identity, cookie authentication, or an external provider using OpenID Connect. Plan how existing password hashes will be upgraded, since the old and new hashing formats differ. Our authentication practice quizzes cover claims, schemes, and policies, which are exactly the concepts you need here.

Finally, budget time for hosting changes. Moving off the old framework often means new deployment pipelines, health checks, and logging. Many teams take the opportunity to containerize, which makes it easy to run several runtime versions side by side during the transition. Document the final target version, set an owner for yearly upgrades, and the next migration will take days instead of months.

Practice ASP.NET Core Identity and Security Questions

Start every session with a version check. Open a terminal and run dotnet --info, which prints the active SDK, the installed runtimes, and the operating system details in one block. Then run dotnet --list-sdks and dotnet --list-runtimes to see everything side by side. Ten seconds of checking prevents the classic problem where a project builds on one laptop and fails on another because the installed versions differ.

Pin your versions deliberately. Create a global.json file next to your solution with the SDK version and a rollForward policy such as latestFeature. Pair it with a Directory.Build.props file that sets the target framework once for every project. These two small files remove most of the it-works-on-my-machine arguments in a team, and they make upgrades a one-line change reviewed in a single pull request.

Use containers to test against multiple versions. Pull the mcr.microsoft.com/dotnet/aspnet image for the runtime you deploy to and run your published app inside it before every release. Because each image tag maps to an exact major version, you can verify compatibility with the next release simply by changing the tag. This beats installing several runtimes on a workstation and hoping the environment variables stay clean.

Keep a short upgrade runbook. List the steps you follow for each annual release: read the breaking changes document, update the target framework, update NuGet packages, run the test suite, check middleware order, and deploy to staging. Teams that write this down finish upgrades in a day or two. Teams that improvise often spend weeks chasing errors caused by a single changed default in authentication or JSON serialization.

If you are studying for an interview or certification, build a small flash card set of dates and rules. Include the release years from 2016 to 2025, the LTS versus STS lengths, the meaning of a target framework moniker, and the difference between the SDK, runtime, and hosting bundle. These facts appear constantly in screening questions, and recalling them quickly signals that you understand the platform rather than just the syntax.

Practice with realistic questions, not only reading. The authentication and configuration quizzes on this site mirror the scenarios developers face in production, such as choosing between cookies and JWT bearer tokens, or layering appsettings files with environment variables and user secrets. Take a quiz, review every explanation, and retake it a few days later. Spaced repetition beats a single long cramming session almost every time.

Finally, protect your sources. Download only from official Microsoft locations, verify hashes on installers you plan to run on servers, and subscribe to the official .NET blog or the security announcements repository on GitHub. When a new patch drops, you will hear about it the same day. That habit, more than any single tool, keeps your applications patched, supported, and ready for the next November release.

ASP.NET Core Configuration & Environments 2
Work through options pattern questions, environment-specific settings, and configuration reload behavior in real scenarios.
ASP.NET Core Configuration & Environments 3
Master advanced configuration providers, secrets management, and deployment settings for staging and production environments.

Asp Net Core Questions and Answers

Is there an ASP.NET Core 4.0 release?

No. ASP.NET Core went from version 3.1 directly to .NET 5 in November 2020. Microsoft skipped the number four to avoid confusion with .NET Framework 4.x. If you see ASP.NET Core 4.0 mentioned, the author likely means ASP.NET 4.0 on the old Framework, or simply made a naming mistake.

What is the latest version of ASP.NET Core?

As of late 2026, .NET 10 is the current long-term support release, launched in November 2025 and supported until November 2028. A newer release may arrive each November, so check dotnet.microsoft.com/download for the current listing. For production work, most teams choose the newest LTS version rather than a standard-term release.

Where should I download ASP.NET Core from?

Use dotnet.microsoft.com/download, which is the official source for the SDK, runtimes, and the Windows Hosting Bundle. Package managers such as winget, Homebrew, and Linux distribution repositories are also safe options. Avoid unofficial mirrors, and verify the SHA-512 hash on installers you plan to deploy to servers or build agents.

What is the difference between the SDK and the runtime?

The SDK includes the compiler, command line tools, and templates needed to build applications, plus the runtimes. The runtime only executes already-built apps. Developers install the SDK, while production servers usually need only the ASP.NET Core Runtime, which keeps the footprint small and reduces how many components you must patch.

Do I need the Hosting Bundle?

Only if you deploy to IIS on Windows. The bundle installs the runtimes and the ASP.NET Core Module that lets IIS forward requests to Kestrel. If you host in containers, on Linux with Nginx, or on Azure App Service, you generally do not need it, because those platforms manage the runtime differently.

Can I install multiple versions side by side?

Yes. Different SDKs and runtimes install side by side without conflict. Each application uses the runtime matching its target framework, and the dotnet command uses the newest SDK unless a global.json file pins another one. This makes it easy to maintain older apps while building new ones on a current release.

Which ASP.NET Core versions are out of support?

ASP.NET Core 1.x, 2.x, and 3.1 are long out of support, as are .NET 5, .NET 6, and .NET 7. .NET 8 and .NET 9 reach the end of support in November 2026. Only .NET 10 and newer releases will remain supported after that date, so plan upgrades accordingly.

What does LTS mean for ASP.NET Core?

LTS stands for long-term support. These releases, which are the even-numbered versions like .NET 8 and .NET 10, receive security and reliability patches for three years. Standard-term releases are supported for a shorter period. LTS is the better choice for enterprise applications that cannot be upgraded every year.

How do I check which version is installed?

Open a terminal and run dotnet --info for a full report, dotnet --list-sdks for installed SDKs, and dotnet --list-runtimes for installed runtimes. Inside a project, open the csproj file and read the TargetFramework value, such as net10.0, to see which runtime that specific application expects when it starts.

Can I migrate ASP.NET 4.x to ASP.NET Core directly?

Not with a simple upgrade, because the programming model differs. You must replace Global.asax, web.config, and System.Web dependencies, and Web Forms needs a rewrite. Most teams migrate incrementally using a reverse proxy such as YARP and System.Web adapters, moving one feature at a time while the legacy application keeps running.
โ–ถ Start Quiz