前言

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

升级之路

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

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

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

问题1





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

  • 修改后

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





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

问题2



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

  • 修改后

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

问题3

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

  • 修改

这个地方因为我在看到错误后直接来这升级了,没有截到图,升级的库名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

  • 修改

这个我不需要翻译软件都能看到,这什么什么不让返回了,emm。

这个问题我感觉是3.0可能是还没开始扩展,毕竟刚出想让人还是老老实实用内置的DI吧,这里我的处理方法,只能是老老实实改回void,这个代码就不用再展示了,不算是最好的解决方法。

让我们忘记刚才的难受,继续运行程序吧。

问题5

这个乌压压一大片我还以为浏览器崩了呢,仔细一看,好吧,swagger的事,这里就不多说了。

在我以为能看到友好的Swagger的时候,现实给了我一巴掌。

问题6

这个问题,依然是想用扩展的DI导致的,AspectCore这块儿的东西暂时先屏蔽了,后续找到解决方法之后再处理吧。

  • 修改

经过以上一堆折腾后,我们终于迎来了Swagger欢迎的样子,不容易。

测试

为什么还要带上这个呢,我也搞不懂,习惯了测试一下功能吧,但是这里就不一一截图了,太麻烦(当然测试也只是简单的执行了下之前的测试方法)。

  • log4功能正常
  • swagger功能正常
  • cache功能正常
  • session功能正常
  • cookie功能正常
  • sqlsugar功能正常
  • aop日志功能正常
  • redis功能正常
  • 拦截器与中间层功能正常

如果有我没试到的问题,可以给我留言,因为一个人的力量终究还是有那么点儿局限的。

小结

在覆盖原代码的时候我想了一会儿,我担心万一有人在用呢,这样覆盖后会不会对人有影响,但是转念一想,唉,这东西怕是都没人用吧,自己鼓捣的东西,还是折腾点儿好,折腾使人进步,折腾活跃大脑,折腾…,编不下去了,以后再鼓捣新东西就是直接net core3.0上搞起了。

向net core 3.0进击——April.WebApi从2.2爬到3.0的更多相关文章

  1. 向net core 3.0进击——项目发布与部署

    目录 前言 发布 测试 小结 前言 在经历过好多折腾后,总算是把部署走通了一遍,之前只是简单创建个工程在linux下部署,后来一直将这件事搁置,直到最近刚好团队入手一个小服务器,很显然是linux的, ...

  2. 向net core 3.0进击——多平台项目发布与部署

    前言 在经历过好多折腾后,总算是把部署走通了一遍,之前只是简单创建个工程在linux下部署,后来一直将这件事搁置,直到最近刚好团队入手一个小服务器,很显然是linux的,那就没啥说的了,Come On ...

  3. ASP.NET Core WebAPI帮助页--Swagger简单使用1.0

    1.什么是Swagger? Swagger是一个规范且完整的框架,提供描述.生产.消费和可视化RESTful API,它是为了解决Web API生成有用文档和帮助页的问题.   2.为啥选用swagg ...

  4. 将asp.net webapi的运行时版本由4.0升级到4.5.1时遇到的问题及解决

    更新package 更改.net运行时的版本之后,出现了错误提示,说需要改新以下组件: EntityFramework, EntityFramework.zh-Hans, Microsoft.AspN ...

  5. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

  6. Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)

    准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...

  7. 注意在<s:if test="#session.user.power==0">中不能用 <s:if test=$sessionScope.user.power==0">

    获取封装在session的对象 用#session.对象名,可以获取对象 用#session.对象名.属性,可以获取属性. 注意在<s:iftest="#session.user.po ...

  8. Prism5.0新内容 What's New in Prism Library 5.0 for WPF(英汉对照版)

    Prism 5.0 includes guidance in several new areas, resulting in new code in the Prism Library for WPF ...

  9. csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别

    ODP.NET: 引用: using Oracle.DataAccess; //Oracle g 11.2.0 using Oracle.DataAccess.Client; using Oracle ...

随机推荐

  1. chrome总是崩溃

    1.在chrome浏览器打开chrome://plugins/ 2.找到不正常的插件,停用即可.比如有的插件安装了2个版本,停用低版本的即可.

  2. 2018中国大学生程序设计竞赛 - 网络选拔赛 hdu6438 Buy and Resell 买入卖出问题 贪心

    Buy and Resell Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  3. [在线+源码]vue全家桶+Typescript开发一款习惯养成APP

    # vue-ts-daily 基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp. [源码地址](https://github.com/xiaomuzhu/vue ...

  4. 面试必问的MySQL锁与事务隔离级别

    之前多篇文章从mysql的底层结构分析.sql语句的分析器以及sql从优化底层分析, 还有工作中常用的sql优化小知识点.面试各大互联网公司必问的mysql锁和事务隔离级别,这篇文章给你打神助攻,一飞 ...

  5. 把windows下的压缩包放到Linux目录下去

    今天在自学redis时出现了问题,因为楼主linux也是空白纸,前几天安装了Linux后就只会基本的命令,其他的一概不通啊,所以当redis要在Linux中用时就傻眼了,索性就在windows中下载了 ...

  6. 我的MarkDown入门

    目录 0.前言 1.软件准备 2.基本语法 2.1斜体&加粗 2.2分级标题 2.3分割线 2.4超链接 2.5列表 2.6引用 2.7插入代码 2.8插入图像 2.9插入表格 2.10目录 ...

  7. SpringBoot系列——Security + Layui实现一套权限管理后台模板

    前言 Spring Security官网:https://spring.io/projects/spring-security Spring Security是一个功能强大且高度可定制的身份验证和访问 ...

  8. Python中使用pip安装库时提示:远程主机强迫关闭了一个现有的连接

    场景 在cmd中使用pip install moviepy时,需要安装一些依赖库,很长时间后提示: 远程主机中断了一个现有的连接. 原因是默认镜像源下载过慢,将其修改为国内或者设置安装时的源. 这里以 ...

  9. a149: 乘乘樂

    题目: 你拿到一个整数,却忍不住想把每个位数都乘在一起.例如看到356就会想要知道3 * 5 * 6的值为何.快写个程序帮帮为了乘数字而快发疯的自己吧! 思路:把这个数每一位%10,并且再将它每次/1 ...

  10. (六十九)c#Winform自定义控件-垂直滚动条

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...