Announcing ASP.NET Core in .NET 5

Daniel Roth

Daniel

.NET 5 is now released! .NET 5 is the next version of .NET Core and the future of the .NET platform. With .NET 5 you have everything you need to build rich, interactive front end web UI and powerful backend services.

ASP.NET Core in .NET 5 is loaded with lots of great new features and improvements. Here’s a sampling:

For a full list of everything that’s new in ASP.NET Core in this release, check out the ASP.NET Core in .NET 5 release notes. See also the .NET 5 release notes for additional details and known issues.

Get started

To get started with ASP.NET Core in .NET 5, install the .NET 5 SDK. .NET 5 is also included with the latest updates to Visual Studio and Visual Studio for Mac, so if you’ve already updated your IDE, then you should be good to go.

Visual Studio 2019 16.8 or later is required to use .NET 5 from Visual Studio. .NET 5 is also supported with Visual Studio for Mac. To use .NET 5 with Visual Studio Code, install the latest version of the C# extension.

Upgrade an existing project

To upgrade an existing ASP.NET Core app from .NET Core 3.1 to .NET 5:

To upgrade an existing ASP.NET Core app from .NET 5 RC2 to .NET 5:

  • Update all Microsoft.AspNetCore.*, Microsoft.Extensions.*, and System.* package references to 5.0.0.

That’s it! You should be all set to enjoy the benefits of .NET 5.

See also the full list of breaking changes in ASP.NET Core for .NET 5.

Performance improvements

With every .NET release a special effort is made to improve all aspects of the performance in ASP.NET Core applications. ASP.NET Core in .NET 5 is the fastest .NET web framework we’ve ever shipped!

.NET 5 contains great performance improvements in the runtime and libraries and for the gRPC components. These improvements, when applied to ASP.NET Core, result in some significant wins in throughput (RPS) and latency. The performance results below are taken from the TechEmpower benchmarks for ASP.NET Core with .NET Core 3.1 and from the latest results for ASP.NET Core with .NET 5.

Troughput (max, in RPS)

Scenario 3.1 5.0 Change
Plaintext Platform 8,593 11,690 +36.0%
Json Platform 872 1,261 +44.6%
Fortunes Platform 344 423 +23.0%
Plaintext 3,993 4,420 +12.4%
Json 743 912 +22.6%
Fortunes 223 259 +16.2%

Latency (mean, in ms)

Scenario 3.1 5.0 Change
Plaintext Platform 1.52 0.82 -46.3%
Json Platform 1.24 0.41 -66.7%
Fortunes Platform 1.57 1.26 -19.7
Plaintext 0.87 0.83 -4.2%
Json 1.52 1.20 -21.1%
Fortunes 1.11 0.87 -21.6

The “platform” tests represent highly optimized benchmark implementations, while the non-platform tests use more typical framework components.

The TechEmpower performance composite score, an index based on all of the TechEmpower benchmarks aggregated together, increased from 5,659 to 6,626 with .NET 5, which represents a 17% increase.

Deploy .NET 5 Web Apps to Azure App Service Today

The ASP.NET and Azure App Service teams have worked tirelessly together throughout the .NET 5 timeline to make sure ASP.NET developers have access to the latest bits of the .NET 5 runtime on day zero. This means that, as soon as you can download .NET 5 and get started building apps with it, you can deploy those .NET 5 apps to App Service using Visual Studio and Visual Studio Code, and you’ll have full support for deploying .NET 5 apps to App Service using GitHub Actions.

This day-zero availability of .NET 5 on App Service will be made possible by their new Early Access Runtime feature, which will enable not only .NET 5 apps, but every subsequent release of .NET from now on. This means no more waiting for the platform to support the runtime – it’ll “just be there” as soon as the runtime is available. You can learn more about the Azure App Service Early Access Runtime technology on the App Service team’s blog.

Whilst Early Access will give you a supported path to deploying your .NET 5 apps to Azure App Service immediately, there are some slight nuances to how Early Access works with which you can familiarize yourself on the App Service Early Access .NET page. Specifically, you will need to create the App Service in the Azure Portal, and select .NET as the stack (rather than .NET Core), then select .NET 5 as the .NET Framework Version as shown below.

Azure App Service settings for .NET 5

Join us for the .NET 5 release at .NET Conf 2020

Come celebrate with us and learn all about the .NET 5 release at .NET Conf 2020, a FREE, three day virtual developer event co-organized by the .NET community and Microsoft. This year marks the 10th anniversary of the conference, and it will be better than ever with over 80 live sessions from speakers in the community and from the Microsoft product teams. The conference starts today and goes from November 10-12. We hope you can join us!

Thank you!

Thank you to everyone in the community who helped make this release of .NET 5 possible! This release represents the culmination of many GitHub issues, pull requests, design feedback comments and documentation updates contributed by many members of the .NET community. We couldn’t have made it to this point without you!

We hope you enjoy this release of ASP.NET Core in .NET 5. We are eager to hear about your experiences with this latest release. Let us know what you think on GitHub by filing new issues and by commenting on or expressing your support (👍) for existing ones.

Thanks again for trying out ASP.NET Core!

52 comments

Comments are closed. Login to edit/delete your existing comments

  • Avatar
    Vaclav Elias

    Great news! My 2 projects are queuing for this release and other will migrate soon! 🙂 Well done all involved! 🙂

  • Avatar
    Patrick Hintermayer

    The new version is really great. Especially dotnet watch and the default integration of Open API is a great move.

    Regarding the plaintext benchmarks, it seems, that ASP.NET Core 3.1 (Round 19) (7,338,517) is faster, than the “unofficial” benchmark with ASP.NET 5.0 (7,013,309).

    JSON serialization is faster with .NET 5.0, but it’s still on rank 52 (1,188,614) and much slower compared to other languages / frameworks. Rank 1 (1,668,189) is nearly 50% faster. Any plans to improve the performance even further?

    • Avatar
      Sebastien RosMicrosoft employee

      ASP.NET Core 3.1 (Round 19) (7,338,517) is faster

      When Round 19 was recorded, we aligned with the best practice to reduce the length on the plaintext route, which reduced the size of a request. Since the Plaintext benchmark is bottlenecked on network, this improved the results. All the benchmarks that you see at 7.3M used this technique. I filed an issue to suggest that the route be part of the spec, and TechEmpower decided to follow it and after that all benchmarks went back to 7M which is the network max bandwidth.

      This also explains why we expose a number of 11M since we run this benchmark on the same hardware but without network constraints (40G instead of 10G on TE).

      Any plans to improve the performance even further?

      We improved it greatly in .NET 5. This one a key goal for the release. But you are right there is still room for progress and this will be one of our next focus. We will also try to fill the gap between the Middleware/MVC and Platform benchmarks by improving the perf of API development.

  • Thomas Tomiczek
    Thomas Tomiczek

    How can we use it? As in: When will VS 16.8 release? Later today? Because my vs_isntaller does not see it yet.

  • Avatar
    Roy Soriano

    I am trying to build a Blazor Wasm with Net 5 template. I have checked individual user accounts, pwa, https, aspnet core hosted.
    I updated to latest visual Studio, latest 5.0 sdk and runtime. But when It creates the project. The Blazor client could not be loaded. For some reason its looking for a 3.1 sdk. What do I do?

    • Daniel Roth
      Daniel RothMicrosoft employee

      Hi Roy. I believe this is because the release of the new update to Visual Studio 2019 was delayed a few hours. It should be available shortly. In the meantime you can try building and running from the command-line, or you can use Visual Studio preview channel.

  • Avatar
    moshe gutman

    What about day-zero availability of .NET 5 on App Service on Azure Government?

    • Brady Gaster
      Brady GasterMicrosoft employee

      All federated clouds have a bit of delay due to various licensing, governance, and security implications, so I can’t speak to precisely when it will be available and have reached out to some of our friends in the App Service team to see if we can get an update from them in this thread.

      Note – you can do self-contained publishes to App Service today in any region, any cloud, which enables you to effectively pin the runtime and SDK you want, so you could use .NET 5 today in those clouds if you opt for self-containment. We have docs on this, or if folks need help on it we could do a post specific to that process through VS, CLI, and other means.

      • Avatar
        Byron TardifMicrosoft employee

        +1 to what @Brady said 👆🏽 we are working to get the Early Access infra I don’t have an ETA to share but it’s in progress.

      • Avatar
        moshe gutman

        Thank you! Yes, that is what we currently do. Looking forward to having this available without self-contained publishing too.

  • Avatar
    Mark Gunn

    Hi Daniel, this looks really good.

    But do you know if the problem I’m having below may be fixed or if I am missing something: I’ve published a default Blazor Webassembly with Authentication (default Identity) to a hosting account but once published I can’t seem to get the Login Functionality to work in new Edge or Chrome – the console shows the following error message.

    I get this when trying to Log In – I can’t get pass the log in page.

    Cookies marked with SameSite=None must also be marked with Secure to allow setting them in a cross-site context. This behavior protects user data from being sent over an insecure connection. The cookie is: Identity.External that seems to be the issue.

    Have you come across this before as I am stuck and can’t get passed this?

      • Avatar
        Mark Gunn

        Yes, I’m using HTTPS.

        I’m also getting this in the browser console:

        Mixed Content: The page at ‘https://www.****.co.uk/authentication/login-failed’ was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ‘http://www.*****.co.uk/.well-known/openid-configuration’. This request has been blocked; the content must be served over HTTPS.

      • Avatar
        Mark Gunn

        Think I have sorted this issue now by adding the following to startup.cs – for anybody else that may be interested:

        app.Use((ctx, next) => { ctx.SetIdentityServerOrigin("https://www.my-domain-name-here.co.uk"); return next(); });
  • Avatar
    Nathan Hunt

    Fantastic effort by the team to get this release out there! Great job, looking forward to using it.

  • Avatar
    FillTable Admin

    Congrats!

    My sites are up!

    For anyone migrate from rc2, if you run into unknown error due to integrity check… Clean your solution first before rebuild

  • Avatar
    syed hameed

    Hi all,

    It’s a great news. I am looking for kerberos authentication in .net 5 , if anyone can point out it will be great help