ASP.NET Core 2.2 迁移至 3.0 备忘录
将 ASP.NET Core 2.2 迁移至 ASP.NET Core 3.0 需要注意的地方记录在这篇随笔中。
TargetFramework 改为 netcoreapp3.0
<TargetFramework>netcoreapp3.0</TargetFramework>
从 Web 项目(Microsoft.NET.Sdk.Web)中移除 Microsoft.AspNetCore.App 的 PackageReference
<PackageReference Include="Microsoft.AspNetCore.App" />
对于类库项目,如果有对 Microsoft.AspNetCore.App 的 PackageReference 引用,需要改为 FrameworkReference
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
或者将 Microsoft.NET.Sdk 改为 Microsoft.NET.Sdk.Web ,将 OutputType 设置为 Library ,详见博问
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<OutputType>Library</OutputType>
</PropertyGroup>
</Project>
Program 中 WebHost 改为 Host (注:使用 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>();
});
}
如果不使用 Razor Pages ,在 Startup.ConfigureServices 中将 services.AddMvc() 改为
services.AddControllers();
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();
对于 Razor Class Library 项目 .csproj 配置
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
EF Core 3.0 配置一对一关系(生成 INNER JOIN SQL 语句)
builder.HasOne(p => p.ViewCount)
.WithOne()
.IsRequired()
.HasPrincipalKey<ViewCount>(vc => vc.PostId);
EF Core 3.0 OwnsOne 关系配置注意
builder.OwnsOne(b => b.ScoreRank, sr =>
{
sr.ToTable("ScoreRank");
sr.HasKey(x => x.BlogId);
//EF Core 3.0 所需
sr.WithOwner().HasForeignKey(x => x.BlogId);
});
EF Plus(Z.EntityFramework.Plus.EFCore) 不支持 .NET Core 3.0 ,详见博问
EFCore.BulkExtensions 也不支持 .NET Core 3.0 ,但只需修改它的1行代码就可以支持,详见博问
如果数据库服务器用的是 SQL Server 2008 ,并且用的是 docker 容器部署,需要修改 openssl 的配置,详见博问
【相关链接】
Breaking changes to Microsoft.AspNetCore.App in 3.0
ASP.NET Core 2.2 迁移至 3.0 备忘录的更多相关文章
- ASP.NET Core 2.2 项目升级至 3.0 备忘录
将 ASP.NET Core 2.2 迁移至 ASP.NET Core 3.0 需要注意的地方记录在这篇随笔中. TargetFramework 改为 netcoreapp3.0 <Target ...
- 从 ASP.NET Core 3.1 迁移到 5.0
3月中旬,微软官方已经发布了dotnet 5的第一个预览版:5.0.0-preview.1. dotnet core经过前几个版本的发展和沉淀,到3.1已经基本趋于稳定. 所以从.net core 3 ...
- asp.net core 从 3.1 到 5.0
asp.net core 从 3.1 到 5.0 Intro 就在前几天,微软宣布了 .NET5 发布了 RC1 版本,这也意味着 .NET5 的开发基本稳定了,正式发布之前,不会再新增新的 Feat ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
- 从 ASP.NET Core 2.1 迁移到 2.2 踩坑总结
官方迁移文档:https://docs.microsoft.com/zh-cn/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs= ...
- asp.net core 支付宝支付( 电脑2.0)
支付宝电脑支付实测在手机浏览器也可以唤醒手机支付宝进行支付,因此也可以作为支付宝手机web支付方式.支付宝电脑支付流程为使用支付宝官方sdk通过获取的支付宝参数构造DefaultAopClient实例 ...
- 【原创】Asp.NET Core Web API与Vue 3.0搭建前后分离项目
特地记录一下,网上的教程写的稀里糊涂的,整得我都心塞塞的,其实实现的过程蛮简单的 问题是这样的:我将Vue构建生成好的文件,放在后端wwwroot文件里面,并开启静态文件访问功能,结果总是无法显示相应 ...
- ASP.NET Core MVC配置差异(3.0和2.X)
https://www.cnblogs.com/lonelyxmas/p/10934388.html net core 2.x MVC配置 public void ConfigureServices( ...
- Asp.Net Core 2.2 - HTTP Error 500.0 - ANCM In-Process Handler Load Failure
检查发布文件下是否存在runtime这个文件夹,如图
随机推荐
- L1-Day4
L1-Day4 1.这消息使她非常悲伤. [我的翻译]The message makes she very sad. [标准答案]The news made her very sad. [对比分析]( ...
- 网络学习day04_VLSM、子网划分
IP子网划分 首先,在进行子网划分的学习之前,我们先来回顾一下IP地址的相关知识,同时了解一下公有和私有IP地址: 在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门 ...
- python加密
""#line:4 __all__ =[]#line:6 class OO0O0O000O0O0O000 :#line:8 ""#line:9 def __in ...
- JS 禁用鼠标右键
oncontextmenu="window.event.returnValue=false" style="overflow-y: hidden; overflow-x: ...
- Python-Django-Ajax
什么是Ajax: 通过js语言跟后台进行交互的一个东西 -特点:异步,局部刷新 ajax往后台提交数据 $.ajax({ url:'请求的地址', type:'get/post', data:{key ...
- select2 下拉搜索控件
1.添加相应的script链接 jquery: <script type="text/javascript" src="http://cdn.bootcss.com ...
- spring-boot-starter-thymeleaf 避坑指南
第一步:pom配置环境 先不要管包是做什么的 总之必须要有 否则进坑 <!--避坑包--> <dependency> <groupId>net.sourceforg ...
- 服务器启动socket服务报错 java.net.BindException:Cannot assign requested address
错误信息: 2017-06-13 11:18:00,865 [GateServer.java:82][ERROR]:启动服务出错了java.net.BindException: Cannot ass ...
- How to fetch all Git branches
问题描述 I cloned a Git repository, which contains about five branches. However, when I do git branch I ...
- [转] Brook 搭建教程
https://www.jiongjun.cc/technology/500.html 在搭建 brook 代理之前,首先要求你要有一台国外 vps,关于国外 vps 选择,可以参考这篇:推荐几款国外 ...