April.WebApi从2.2爬到3.0

时间:2021-12-13 23:36:58

标签:

原文:向net core 3.0进击——April.WebApi从2.2爬到3.0

目录

前言

在之前对Swagger的变化做了调整后,就开始想着要不把之前的工程升级得了,这样就还是个demo工程,来做各种测试(当然还是因为懒),这就有了今天这个比较折腾的一步。

升级之路

首先,April.WebApi工程右键->属性,将之前的net core 2.2升级到3.0,然后对每个类库项目右键->属性,将net standard 2.0升级到2.1(这个应该是没啥)。

升级之后,我们重新生成一下,咦,没报错美滋滋。

因为之前有过创建3.0的工程例子,所以对于Startup这块儿还是要调整下的。

问题1

April.WebApi从2.2爬到3.0


April.WebApi从2.2爬到3.0


April.WebApi从2.2爬到3.0

因为net core3.0之后,对于Api可能是调整了(因为没创建过Mvc工程),所以这个地方不再模糊的使用Mvc了。

修改后

因为部分方法被弃用,因为3.0是一个崭新的开始。

April.WebApi从2.2爬到3.0


April.WebApi从2.2爬到3.0


April.WebApi从2.2爬到3.0

好了,修改完启动文件,我们来愉快的运行吧。

问题2

April.WebApi从2.2爬到3.0


开头都这么难么,我们来看下这个错误,好了是跨域的问题,现在不让AllowAll了是吧,并不是,是因为我们又要允许所有访问,还能带上Cookie,现在不让这样搞了。

修改后

April.WebApi从2.2爬到3.0

这个问题修改完后,我们再来运行下程序。

问题3

April.WebApi从2.2爬到3.0

这个是什么问题呢,Session也不让这样玩了,也不是,主要问题呢是现在不需要WebHost了,Session的实现不明确了应该是,所以我们来该升级的升级,该调整的调整,其他工程引入的同样需要更新下

修改

April.WebApi从2.2爬到3.0

这个地方因为我在看到错误后直接来这升级了,没有截到图,升级的库名Microsoft.VisualStudio.Web.CodeGeneration.Design

修改Program内容如下:

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>(); }); }

补充

在下面的执行时,我发现使用Session会有问题,具体什么问题呢,因为3.0多了一个注册项,所以session的代码调整如下,这里注意下UseSession的位置要在Redirection之后。

public void ConfigureServices(IServiceCollection services) { … #region Session services.AddDistributedMemoryCache(); services.AddSession(options => { options.Cookie.Name = "April.Session"; options.IdleTimeout = TimeSpan.FromSeconds(2000);//设置session的过期时间 options.Cookie.HttpOnly = true;//设置在浏览器不能通过js获得该cookie的值,实际场景根据自身需要 options.Cookie.IsEssential = true; }); #endregion … } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { … app.UseHttpsRedirection(); app.UseSession(); app.UseRouting(); … }

修改完成后,我们再来运行下程序。

问题4

April.WebApi从2.2爬到3.0

修改