Migrating from .Net Core 2 to 3
I recently migrated my .Net Core Boilerplate template from .Net Core 2.2 to 3.1. It is a relatively easy process. If you are planning to upgrade the .Net Core version in your project then I recommend checking this awesome guide from Microsoft.
Some of the major things to look out for in this migration are,
Routing
Configuration of Routing in Startup.cs
has changed considerably. If your are running an API server with Controllers then change the following in code
public void ConfigureServices(IServiceCollection services)
{
// services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// replace the above with
services.AddControllers();
.....
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// app.UseMvc();
// replace this with
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
JWT token authentication
If you are using JWT authentication, then you might want to add the package Microsoft.AspNetCore.Authentication.JwtBearer
to your API project. Also, you will need to change the following in the Startup.cs
,
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// make sure this is located in between, UseRouting & UseEndpoints
app.UseAuthentication();
app.UseAuthorization();
}
Environment
Replace IHostingEnvironment
with IWebHostEnvironment
in the Startup.cs
.
Json Result
Microsoft moved the JsonResult into the Microsoft.AspNetCore.Mvc.Core
assembly. This caused a unexpected problem for me where passing a model object into JsonResult
resulted in empty object passed to the frontend. Replacing known Model object with a anonymous object solved this issue.