日志

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

 来源    2019-10-09    1  

前言

在之前对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上搞起了。

相关文章
asp.net-core-2.0 – 在IIS中托管asp.core 2.0 webapi时出错
问答我已经开发了asp.net core 2.0 webapi并在IIS中托管.我安装了Hosting Bundle Installation中提到的托管包 但由于某种原因,我收到以下错误: An err ...
ASP.Net Core 2.0 Webapi设置了log4net
问答我是asp.net core 2.0的新手.我创建了一个webapi,并希望将log4net配置为我的日志记录提供程序. 我在网上找不到一些有用的例子.任何人都可以帮我提供正确的链接或一些示例代码,如 ...
ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
日志参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...
ASP.NET Core - 实现自定义WebApi模型验证
日志Framework时代 在Framework时代,我们一般进行参数验证的时候,以下代码是非常常见的 [HttpPost] public async Task<JsonResult> Sav ...
asp.net core系列 38 WebAPI 返回类型与响应格式--必备
日志一.返回类型 ASP.NET Core 提供以下 Web API Action方法返回类型选项,以及说明每种返回类型的最佳适用情况: (1) 固定类型 (2) IActionResult (3) Ac ...
asp.net core系列 37 WebAPI 使用OpenAPI (swagger)中间件
日志一.概述 在使用Web API时,对于开发人员来说,了解其各种方法可能是一项挑战.在ASP.NET Core上,Web api 辅助工具介绍二个中间件,包括:Swashbuckle和NSwag .NE ...
asp.net core系列 36 WebAPI 搭建详细示例
日志一.概述 HTTP不仅仅用于提供网页.HTTP也是构建公开服务和数据的API强大平台.HTTP简单灵活且无处不在.几乎任何你能想到的平台都有一个HTTP库,因此HTTP服务可以覆盖广泛的客户端,包括浏 ...
ASP.NET CORE系列五 webapi整理以及RESTful风格化
日志原文:ASP.NET CORE系列[五]webapi整理以及RESTful风格化介绍 什么是RESTful?  这里不多做赘述,详情请百度! 哈哈,本来还想巴拉巴拉介绍一些webapi, RESTfu ...
asp.net core AuthenticationMiddleware 在WebApi中的的使用
日志在.net framework 4.5架构下使用认证(Authentication)授权(Authorization). IIS使用HttpModule进行认证(Authentication),我们可 ...
asp.net core 系列之webapi集成Dapper的简单操作教程
日志Dapper也是是一种ORM框架 这里记录下,使用ASP.NET 集成 Dapper 的过程,方便自己查看 至于Dapper的特性以及操作可以参考Dapper官方文档 1.创建数据库相关 在Sql S ...
asp.net core 系列之webapi集成EFCore的简单操作教程
日志因为官网asp.net core webapi教程部分,给出的是使用内存中的数据即 UseInMemoryDatabase 的方式, 这里记录一下,使用SQL Server数据库的方式即 UseSql ...
.NET Core 下调用WebAPI
日志前言 今天我们介绍多种客户端调用WebApi的方式,可以是原生写的,也可以借助.NET 框架下的其他HTTP库.我们一起来看看它们之间的一些异同吧- RestSharp 首先要介绍的就是这款REST ...
Core下简易WebApi
日志代码很粗糙~ 粘贴github地址 https://github.com/htrlq/MiniAspNetCoreMini demo public class Startup { public Sta ...
asp.net core 2.0 webapi集成signalr
日志asp.net core 2.0 webapi集成signalr   在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.N ...
WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列五 webapi整理以及RESTful风格化
日志WPF中的常用布局 一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容为W ...
windows jenkins dotnet core 自动化构建webapi
日志jenkins环境搭建好 注意一下几点: - 需要安装git - 需要安装dotnet core sdk环境 - 遇到这里报错,提示 Repository URL 错误的话,如果确实没有配置错误,重启 ...
向net core 3.0进击——Swagger的改变
日志前言 十一小长假在不知不觉间可都没了,在这个小尾巴的空隙,把这两天鼓捣的net core 3.0升级过程记录一下,首先还是根据之前的顺序一个个补充进来,先从Swagger的变化说起(新建工程什么的不多 ...
c# – EF Core 1.1到WebApi核心 – 添加迁移失败
问答我认为我的所有依赖项都正常运行1.1但是当我尝试按照此处的步骤操作https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new ...
如何在IIS上托管基本的ASP.NET Core 2 WebAPI应用程序
问答我在主题中创建了一个应用程序,只选择"ASP.NET Core Web Application",".NET Core","ASP.NET Core ...