将 ASP.NET Core 2.2 迁移至 ASP.NET Core 3.0 需要注意的地方记录在这篇随笔中。
TargetFramework 改为 netcoreapp3.0
<TargetFramework>netcoreapp3.0</TargetFramework>
从 PackageReference 中移除 Microsoft.AspNetCore.App
<PackageReference Include="Microsoft.AspNetCore.App" />
Program 中 WebHost 改为 Host
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
Startup 中 app.UseMvc() 改为 app.UseRouting() 与 app.UseEndpoints()
app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
.NET Core 3.0 SDK 的 docker 镜像
mcr.microsoft.com/dotnet/core/sdk:3.0
ASP.NET Core 3.0 runtime 的 docker 镜像
mcr.microsoft.com/dotnet/core/aspnet:3.0
Web API 响应的 json 数据中文被编码的问题(详见博问)
services.AddMvc().AddNewtonsoftJson();
EF Core 3.0 配置一对一关系(生成 INNER JOIN SQL 语句)
builder.HasOne(p => p.ViewCount)
.WithOne()
.IsRequired()
.HasPrincipalKey<ViewCount>(vc => vc.PostId);