自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 基于CentOS的Docker容器化部署(五)—— 使用nginx转发api请求

本系列的前提是你已经看完了《基于.NET6平台开发WebApi》系列文章。如果您还没看完可以直接拉取代码 >>我们在宝塔面板打开文件夹,并输入以下内容,其中域名和ssl证书请自行申请并完成解析配置。保存之后我们输入docker restart nginx重启nginx,使配置生效。打开浏览器输入www.mktools.site即可访问接口的swagger页面。

2023-04-26 10:40:17 864

原创 基于CentOS的Docker容器化部署(四)—— 部署api

启动项目: docker run -d -p 8080:80 -v /mnt/Api/Logs:/app/Logs -v /mnt/Api/Files:/app/Files --name api api --restart=always。创建项目文件夹:mkdir -p /app/projects/api,然后通过宝塔面板,将发布后的文件上传到服务器。如果您还没看完可以直接拉取代码 >>进入文件目录: cd /app/projects/api。通过浏览器打开首页,至此,我们的api项目便部署完成。

2023-04-23 10:42:40 506

原创 基于CentOS的Docker容器化部署(三)—— 安装redis和mysql

本系列的前提是你已经看完了《基于.NET6平台开发WebApi》系列文章。如果您还没看完可以直接拉取代码 >>首先我们设置一下docker的镜像地址到国内,这样安装的速度比较快。1、接下来我们通过docker部署redis和mysql服务。在文件夹下创建daemon.json文件,输入以下内容并保存。到此,我们的redis和mysql服务已经安装完成。将protected-mode no #设置为no。至此,我们的redis服务已经启动完成。我们打开redis.conf。接下来重启docker。

2023-04-23 10:21:33 356

原创 基于CentOS的Docker容器化部署(二)—— 安装宝塔面板

输入 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 安装宝塔面板,遇到对话框输入y继续。2、接下来通过系统提供的地址用户名和密码登录宝塔面板,首先我们要给服务器增加宝塔面板访问的端口号,接着使用用户名和密码登录,你可以绑定你的宝塔账号,然后我们就可以进入宝塔面板主界面。如果您还没看完可以直接拉取代码 >>

2023-04-23 09:50:59 794

原创 基于CentOS的Docker容器化部署(一)—— 准备机器

本系列的前提是你已经看完了《基于.NET6平台开发WebApi》系列文章。如果您还没看完可以直接拉取代码 >>1、安装应用环境:CentOS,Docker。到这里我们的机器已经准备完成。2、重置密码后通过终端连接。

2022-11-23 16:39:15 581 3

原创 利用过滤器实现全局异常和全局日志功能

此处我们使用Sqlsugar的自动分表功能来实现分表插入,当然根据你的日志量大小用单表也可以实现。今天我们利用过滤器实现一个全局异常和一个全局日志的功能。请求接口发现异常已经按照Json格式成功抛出。...

2022-08-19 09:58:19 1236

原创 .NET事件总线(消息队列)轻松应对高并发

源码点我一眨眼时间又临近周末,又可以休息了今天给大家介绍一个比较轻量级的事件总线:Jaina。总体介绍:Jaina核心类为一个BackgroundService,通过While来监听消息,默认存储实现为Channel,可能有的朋友没听过Channel,从.NETCore3.0微软开始提供Channel类,Channel类本质为线程安全队列,其中结合了信号量,简化了队列的使用。因此Jaina完全可以替代一般的消息队列来使用,将业务进行解耦,轻松应对高并发(Jaina非常轻量非常简洁,代码写的也比较不

2022-05-26 08:50:37 3431

原创 访问令牌(AccessToken)与刷新令牌(RefreshToken)

源码点我闲着无聊的我又来了,今天介绍一下访问令牌(AccessToken)与刷新令牌(RefreshToken)。最近公司来了几个Java,然后空气顿时充满了学术的氛围,每天都弥漫着垃圾回收,内存分配,堆栈等等各种技术问题的讨论,竖起了我的小耳朵,我偶然间听到了这个Token过期的问题,今天来说一说。众所周知,JWT是我们常用的Token类型之一,但是JWT是无状态的,所有的信息,包括超时时间都会编码在JWT中。如果Token设置的超时时间过长会显得有些不安全,如果设置的过短则必须频繁的登录。在Id

2022-05-15 09:04:20 10774

原创 基于.NET6平台开发WebApi(十二)—— 添加文件上传下载功能

本篇为大家介绍WebApi又一个必不可少的功能,那就是文件上传下载。还记得我们在初期改造项目的时候删掉的wwwroot文件夹吗,这里放的就是项目中的静态资源文件,接下来我们来手动实现这个功能。1、我们为项目添加一个静态的工具类,命名为CommonFun,并添加如下代码(以后你所有的静态扩展方法都可以放到这里)using System.Text;namespace NET6.Infrastructure.Tools{ /// <summary> /// 工具类

2022-01-19 10:54:24 5730 15

原创 基于.NET6平台开发WebApi(十一)—— 使用JWT进行用户鉴权

至此我们的项目已经可以正常运行了,但是聪明的你可能发现了一个问题,那就是我们在第九章中将控制器基类中的[Authorize]标记注释掉了,而且我们添加了一个CurrentUserId属性,没错,它就是为了用户鉴权使用的。用户登录可以说是WebApi必不可少的功能,本篇我们就来详细说说如何进行用户鉴权。1、对于小型项目或者个人项目来说,可能规模比较小,而且不需要单点登录这样的功能,也就没有必要去单独建设一个IdentityServer服务器来实现鉴权,此处我们可以直接使用.NET自带的功能来实现JWT签发

2022-01-18 11:23:22 5836 3

原创 基于.NET6平台开发WebApi(十)—— 添加CSRedis支持

到此您已经完成了接口基本功能的开发,已经完全具备做项目的能力,本篇介绍.NET平台另一个优秀框架:CSRedis,通过它您可以更方便的操作Redis。1、打开Nuget,搜索安装CSRedisCore。2、接下来我们将Redis连接字符串配置到配置文件中,打开appsetting.json,添加如下代码{ "ConnectionStrings": { "SugarConnectString": "server=localhost;Database=DBTest;Uid=root;Pwd=

2022-01-17 10:38:24 2644 1

原创 基于.NET6平台开发WebApi(九)—— 添加Autofac支持

仓储已经成功注入到项目中,接下来我们基于Address来实现简单的CRUD操作1、为了更好的开发,我们先定义一个通用的返回结构,并在BaseController中实现几个实例化方法和一些通用方法,代码如下using Microsoft.AspNetCore.Mvc;using NET6.Domain.ViewModels;using Serilog;using System.Security.Claims;namespace NET6.Api.Controllers{ /// &l

2022-01-17 10:36:10 2478 9

原创 基于.NET6平台开发WebApi(八)—— 添加Autofac支持

1、目前Sqlsugar已经具备操作数据库的能力,根据微软电子书,我们按照如下结构创建文件夹来完善我们的项目2、我们分别在对应的文件夹中为Address创建Dto和ViewModel,代码如下namespace NET6.Domain.Dtos{ public class AddressDto { /// <summary> /// 收件人姓名 /// </summary> public stri

2022-01-17 10:32:50 3445 14

原创 基于.NET6平台开发WebApi(七)—— 添加Sqlsugar支持

1、Sqlsugar配置完毕,我们按照如下结构来创建实体类,为了方便开发,我们先创建一个实体基类EntityBase,然后创建Address类继承于EntityBaseusing SqlSugar;namespace NET6.Domain.Entities{ /// <summary> /// 实体基类 /// </summary> public class EntityBase { /// <summary&

2022-01-13 14:37:48 4065 1

原创 基于.NET6平台开发WebApi(六)—— 添加Sqlsugar支持

写到这里,各位看官且听我说两句废话。不同于其他语言,.NET平台向来以易用性著称,不管是持续更新的C#语法,还是整个.NET平台,亦或者是有宇宙第一IDE著称的VS,都表现出了这个特点。随着微软开源、容器化、.NETCore、.NET5、.NET6等的出现,更是把性能和易用性发挥到极致,单从技术上讲,.NET可以说已经是名列前茅,如今国内大厂也都纷纷开始部分的转向.NET平台。今天说的Sqlsugar便是.NET性能和易用性的代表之一,不同于EF的设计思想,相比于市面上的其他DBHelper,他更加简单易用

2022-01-13 14:32:43 6000 8

原创 基于.NET6平台开发WebApi(五)—— 添加Serilog支持

接下来我们为项目添加日志支持1、由于本项目我们需要将日志写入到文件,因此我们可以直接安装Serilog.Sinks.File,打开Nuget,搜索安装Serilog.Sinks.File。2、打开Program.cs,添加如下代码:#region 初始化日志Log.Logger = new LoggerConfiguration() .MinimumLevel.Error() .WriteTo.File(Path.Combine("Logs", @"Log.txt"),

2022-01-12 16:42:27 2922 3

原创 基于.NET6平台开发WebApi(四)—— 添加Swagger支持

swagger搭建成功,但是还没有任何显示,接下来我们新增控制器。1、我们先创建一个BaseController,用于实现一些通用的功能。2、修改BaseController继承于ControllerBase,删掉其中的Index方法,为BaseController添加类注释,并添加[Authorize]和[ApiController]标记。3、新增AddressController,继承于BaseController,添加如下代码,编译运行,一个最简单的接口便成功返回。using Micros

2022-01-10 13:47:57 2971 13

原创 基于.NET6平台开发WebApi(三)—— 添加Swagger支持

本项目使用的一些框架如下:Swagger,Serilog,Sqlugar,CSRedis,Autofac具体配置将会在后续逐一介绍1、首先我们对项目进行引用,右键.NET6.Api项目依赖项,选择添加项目引用,勾选NET6.Domain和NET6.Infrastructure,使用相同的方法为NET6.Infrastructure添加NET6.Domain引用。2、打开Nuget,搜索安装Swashbuckle.AspNetCore。3、由于swagger是基于xml文件来加载文档,所以我们要

2022-01-10 13:41:34 6293 11

原创 基于.NET6平台开发WebApi(二)—— 项目搭建

**[ ] 1、为了更好的进行开发,我们对新建的项目进行一些改造: 修改解决方案名称为:NET6(快速开发框架)修改项目名称为:NET6.Api删掉wwwroot、Views和Models文件夹以及Controllers文件夹中的HomeController 2.引入库附上微软电子书:设计面向 DDD 的微服务 | Microsoft Docs右键添加新建项目,选择类库,输入名称NET6.Domain,选择框架.NET6.0并点击创建,删掉类库中自带的Class1.cs文件,使用相同的方法创建

2022-01-08 15:01:03 5427

原创 基于.NET6平台开发WebApi(一)—— 项目搭建

系列文章目录基于.NET6平台开发WebApi(一)—— 项目搭建

2022-01-08 14:33:09 3675

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除