厦门德仔
分享与交流:信息化建设、数字化转型、项目管理、流程梳理与再造、前后端开发、财务管理、数据库、网络、家庭教育与人生感悟等希望我的博客能带您愉快心情。
展开
-
【NetCore】ControllerBase:ASP.NET Core 中的基石类
ControllerBase 是 ASP.NET Core 框架中的一个抽象类,位于 Microsoft.AspNetCore.Mvc.ControllerBase 命名空间下。它是所有控制器类的基类,无论是传统的 MVC 控制器还是 Web API 控制器,都继承自 ControllerBase。与传统的 Controller 类不同,ControllerBase 不包含视图相关的功能(如 View() 方法),因此更适合用于构建无视图的 Web API 项目。原创 2025-04-02 21:21:16 · 26 阅读 · 0 评论 -
【Asp.Net Core】 缓存管理
/缓存键Book?If(b==null) //如果缓存中没有数据//查询数据库,然后写入缓存缓存穿透的解决方案1.解决方法:把“查不到”也当成一个数据放入缓存。2.我们用GetIOrCreateAsync方法即可,因为它会把null值也当成合法的缓存值Logger.LogInformation(“数据库查询:{0}”,bnull?“为空”:“不为空”);Return b;原创 2025-03-06 11:06:16 · 54 阅读 · 0 评论 -
[NetCode] 初识Serilog配置
一、.net mvcserilog在mvc中配置比较简单,配置好后在项目入口处初始化一下就可以使用。引入的包:多数情况下,sinks选择输出到文件或者数据库。原创 2025-01-03 15:20:41 · 105 阅读 · 0 评论 -
【C#】NET 9中LINQ的新特性-CountBy
在 .NET 中,使用 LINQ 对元素进行分组并计算它们的出现次数时,需要通过两个步步骤。首先,使用 GroupBy方法根据特定键对元素进行分类。然后,再计算每个组元素包含个数。而随着 .NET 9 版本发布,引入了一些新特性。其中 LINQ 引入了一种新的方法 CountBy,本文一起来了解 CountBy 方法。原创 2024-12-05 08:14:00 · 319 阅读 · 0 评论 -
[C#]使用 .NET 8/9 中的 Async/Await 避免常见错误并提高性能
在.NET 8中,异步编程对于构建响应迅速且高效的应用程序至关重要。如果使用得当,async/await关键字能够简化异步代码的复杂性,但它也并非毫无挑战。在本文中,我们将探讨开发人员常犯的错误以及避免这些错误的实用策略,所有内容都将基于实际的编码场景展开。让我们深入了解如何改进你的异步代码并提升你的.NET开发技能吧。原创 2024-12-04 08:06:09 · 454 阅读 · 0 评论 -
【C#】C# .NET中的Func、Predicate和Expression详解
在C# .NET中,Func、Predicate和Expression是三种常用的委托和表达式类型,它们在编写灵活、可重用的代码时非常有用。本文将详细介绍这三种类型,并提供多个实例来说明它们的用法和区别。它们通常用于构建动态查询、规则引擎或者在运行时修改代码行为。Predicate是一个特殊的Func,它始终返回一个布尔值。Func是一个通用委托,它可以接受零个或多个输入参数,并返回一个值。示例4:Predicate vs Func。示例5:基本Expression。示例3:使用Predicate。原创 2024-11-07 14:13:13 · 373 阅读 · 0 评论 -
【JWT】Asp.Net Core中JWT刷新Token解决方案
1.关于JWT的Token过期问题,到底设置多久过期?(1).有的人设置过期时间很长,比如一个月,甚至更长,等到过期了退回登录页面,重新登录重新获取token,期间登录的时候也是重新获取token,然后过期时间又重置为了1个月。这样一旦token被人截取,就可能被人长期使用,如果你想禁止,只能修改token颁发的密钥,这样就会导致所有token都失效,显然不太可取。(2).有的人设置比较短,比如10分钟,在使用过程中,一旦过期也是退回登录页面,这样就可能使用过程中经常退回登录页面,体验很不好。原创 2024-11-06 13:12:26 · 808 阅读 · 0 评论 -
【ASP.NET Core】ASP.NET Core使用AutoMapper
在实际的项目开发过程中,我们使用各种ORM框架可以使我们快捷的获取到数据,并且可以将获取到的数据绑定到对应的List中,然后页面或者接口直接显示List中的数据。但是我们最终想要显示在视图或者接口中的数据和数据库实体之间可能存在着差异,一般的做法就是去创建一些对应的“模型”类,然后对获取到的数据再次进行处理,从而满足需求。因此,如果便捷的实现数据库持久化对象与模型对象之间的实体映射,避免在去代码中手工实现这一过程,就可以大大降低开发的工作量。AutoMapper就是可以帮助我们实现实体转换过程的工具。翻译 2024-10-28 08:59:57 · 157 阅读 · 0 评论 -
【NetCore】Net Core 使用 AspNetCoreRateLimit 实现限流
AspNetCoreRateLimit 是一种 ASP.NET Core 速率限制解决方案,旨在根据 IP 地址或客户端 ID 控制客户端可以向 Web API 或 MVC 应用发出的请求速率。使用.NET 7 自带的中间件 Microsoft.AspNetCore.RateLimiting 可以实现简单的Api限流,但是这个.NET 7以后才集成的中间件,如果你使用的是早期版本的.NET,可以使用第三方库AspNetCoreRateLimit实现Api限流。3.服务的注入与使用。原创 2024-10-21 13:30:05 · 233 阅读 · 0 评论 -
【NetCore】企业微信实现扫码登录(WEB)
在之前企业微信消息推送,继续如何通过企业微信实现扫码登录。redirect_uri 需与授权回调域一致。2.添加用户信息缓存类,优先从缓存中提取。1.html 获取企业微信扫码。原创 2024-04-29 09:17:47 · 396 阅读 · 0 评论 -
【nuget】如何移动 nuget 缓存文件夹
nuget原创 2024-03-15 16:27:48 · 1294 阅读 · 0 评论 -
【日志】log4net 日志不能输出
查找原因是因为 loginfo.IsInfoEnabled、loginfo.IsErrorEnabled等一直为false。原创 2024-03-11 08:09:34 · 544 阅读 · 0 评论 -
【NetCore】企业微信消息推送
应用支持推送文本、图片、视频、文件、图文等类型。请求方式:POST(HTTPS请求地址参数说明: ACCESS_TOKEN 必填各个消息类型的具体POST格式请阅后续“消息类型”部分。如果有在管理端对应用设置“在微工作台中始终进入主页”,应用在微信端只能接收到文本消息,并且文本消息的长度限制为20字节,超过20字节会被截断。同时其他消息类型也会转换为文本消息,提示用户到企业微信查看。支持id转译,将userid/部门id转成对应的用户名/部门名,原创 2023-11-09 06:51:27 · 804 阅读 · 0 评论 -
【NetCore】.NetCore之下载文件
本篇将和大家分享的丝.NetCore下载文件,常见的下载有两种:A标签直接指向下载文件地址和post或get请求后台输出文件流的方式,本篇也将围绕这两种来分享;如果对您有好的帮助,请多多支持。转载 2023-01-10 13:53:50 · 1712 阅读 · 0 评论 -
[NetCore]ASP.NET Core 产生连续 Guid
1 前言1.1 这篇文章面向的读者本文不会过多解释 Guid 是什么,以及顺序 Guid 的作用,需要读者自行具备:知道 Guid,并且清楚其作用与优势清楚 Guid.NetGuid() 产生的 Guid 是混乱无序的,想要一种产生顺序 Guid 的算法来保证数据库的高效运行1.2 连续 Guid 的原理该 Guid 有16字节(byte)共128位(bit),可以包含时间戳,而顺序 Guid 主要是根据时间戳顺序来实现的,所以时间戳的部分,作为排序的决定性因素。转载 2022-11-26 08:15:22 · 1055 阅读 · 0 评论 -
【Quartz】任务调度Quartz从入门到入土(史上最详细)
GitHub:Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目quartz是一个用java实现的开源任务调度框架,可以用来创建简单或者复杂的任务调度,并且可以提供许多企业级的功能,比如JTA以及集群等,是当今比较流行的JAVA任务调度框架。现在也移植到NET,支持.NET。引用官网的一段话jobs大概意思:quartz是一个功能丰富的开源的任务调用系统,它可以创建简单或者复杂的几十、几百、甚至成千上万的job。原创 2022-11-14 14:47:38 · 1147 阅读 · 0 评论 -
【NetCore】百度人脸识别HTTP SDk实战:基于C# ASP.NETCore Net 6
在正式开始之前,需要一些准备以及预备知识,这里可以参考https://www.cnblogs.com/xiongze520/p/10387355.html以及https://www.cnblogs.com/xiongze520/p/10688545.html,讲的很详细。这里只要是人脸活体检测以及1:N检测,根据返回的UserId查找出数据库中对应的用户信息,依然很简单,大家应该看的懂。在人脸注册前需要检测人脸库是否存在该人脸,已经存在了,则终止注册行为。(1)人脸1:N检测,返回人脸对应用户信息。转载 2022-10-25 20:31:17 · 850 阅读 · 0 评论 -
【Asp.Net Core】C#解析Markdown文档
C#解析Markdown文档实现,中间件类实现。引入第三方包ude和markdownsharp原创 2022-09-16 09:14:40 · 1499 阅读 · 0 评论 -
【netcore】 ASP.NET Core 中间件
1.广义上来讲:Tomcat,WebLogic,Redis,IIS;狭义上来讲,ASP.NET Core中的中间件指ASP.NET Core 中的一个组件。2.中间件由前逻辑,next,后逻辑3部分组成,前逻辑为第一段要执行的逻辑代码,next为指向下一个中间件的调用,后逻辑为从下一个中间件执行返回所执行的逻辑代码。原创 2022-09-14 15:17:35 · 1286 阅读 · 0 评论 -
【Asp.Net Core】Asp.Net Core与配置系统的集成
修改环境变量时,因为变量是与进程相关。重新运行运用程序经常并没有改变读取环境变量不会是最新的,需要重新启动VS。3)加载项目根目录下的appsettings.{Enviroment}2)加载项目根目录下的appsettings.json。4)当程序运行在开发环境下,程序会加载“用户机密”配置。1)加载现有的Iconfiguration。5)加载环境变量中的配置。...原创 2022-08-26 10:52:56 · 358 阅读 · 0 评论 -
【Asp.Net Core】缓存管理
缓存管理,标准协议,客户端缓存,服务器缓存,缓存时间策略,缓存穿透,缓存雪崩,分布式缓存原创 2022-08-24 09:12:26 · 488 阅读 · 0 评论 -
【Net6】Net 5.0迁移到Net 6.0
在此日期之前,您需要将您使用的 .NET 版本更新为受支持的版本 (.NET 6.0),以便继续接收更新。适用于 ASP.NET Core 的新的 .NET 6 最小托管模型只需要一个文件和几行代码。如果依靠 global.json 文件来面向特定 .NET SDK 版本,请将 version 属性更新为已安装的 .NET 6.0 SDK 版本。本文档后面会提供使用最小托管模型将 ASP.NET Core 5 Startup 代码迁移到 ASP.NET Core 6 的详细示例。只需要一个文件和四行代码。.原创 2022-08-18 10:49:44 · 1509 阅读 · 0 评论 -
[Mvc&Core]记录部署好的应用程序突然无法访问的一次蹩脚经历!
查看输出错误:(1)检查:跨域配置,测试多种方式仍然无效!(2)重新发布程序,居然连接账号都无法登录了?发现新发布的连接数据库是本地库,郁闷。。。修改重新发布!!!测试:登录正常,但是加载WebApi接口还是存在问题。百度结果:HTTP 响应头 如果存在Access-Control-Allow-Origin 则需要删除。本次居然无法打开?还报错:无法使用虚拟目录密码作为用户 administrator 在本地登录到(3) 本地测试,又是一切正常是哪里出了问题呢?API 地址直接在URL上访原创 2022-06-15 10:38:56 · 243 阅读 · 0 评论 -
[MVC&Core]ASP.NET Core MVC 视图传值入门
ASP.NET Core MVC 视图传值入门转载 2022-06-10 08:22:42 · 562 阅读 · 0 评论 -
【Echart】echart 入门
echart 入门什么是EchartEcharts支持的图表?echarts和chart对比echarts的优点:echarts的缺点:chart.js优点:一. 基本概念二. echart的基本概念什么是EchartEcharts–商业级数据图表商业级数据图表,它是一个纯JavaScript的图标库,兼容绝大部分的浏览器,底层依赖轻量级的canvas类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对原创 2022-04-22 08:42:22 · 2363 阅读 · 0 评论 -
【netcore】MiniExcel轻量级开源组件使用
MiniExcel轻量级开源组件使用开源地址导入&读取Excle实践效果开源地址添加链接描述通常复杂的EXCEL操作采用NPIO组件,优点:性能优越,支持各种复杂操作。缺点:比较繁琐和重量级MiniExcel:则可以满足大部分应用场景,又是轻量级Guget:搜MiniExcel安装组件导入&读取Excle文档简介;读/导入 ExcelQuery 查询 Excel 返回强型别 IEnumerable 数据 [Try it]public class UserAccou原创 2022-04-19 16:32:39 · 7135 阅读 · 1 评论 -
【netcore】操作日志
操作日志新的改变新的改变 public async Task LogAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var sw = new Stopwatch(); sw.Start(); var actionExecutedContext = await next(); sw.Sto原创 2022-04-15 15:18:33 · 910 阅读 · 0 评论 -
【netCore】基于Claim登录授权
基于Claim登录授权场景配置过期报错场景用户登录是一个非常常见的应用场景 .通常我们采用session存储方式。如果存储的内容较多,频繁使用时候显得有点累赘,当然可以自定义对象,但我测试没有成功。net core的登录方式跟以往有些不同,可以说是往好的方向发展,变得更容易扩展,更方便。配置1.首先需要NuGet安装一个包:Microsoft.AspNetCore.Authentication.Cookies打开项目中的Startup.cs文件,找到ConfigureServices方法,我们原创 2022-04-09 16:50:17 · 685 阅读 · 0 评论 -
【netcore】ASP.NET Core中如何更改文件上传大小限制maxAllowedContentLength属性值
ASP.NET Core中如何更改文件上传大小限制maxAllowedContentLength属性值Web.config中的maxAllowedContentLength这个属性可以用来设置Http的Post类型请求可以提交的最大数据量,超过这个数据量的Http请求ASP.NET Core会拒绝并报错,由于ASP.NET Core的项目文件中取消了Web.config文件,所以我们无法直接在visual studio的解决方案目录中再来设置maxAllowedContentLength的属性值。但是转载 2022-04-01 21:38:03 · 2800 阅读 · 0 评论 -
[NetCore]依赖注入
背景今天在做权限过滤器时,需要根据userid获取菜单列表。直接写一个方法在过滤器中。突然感觉怪怪的,能否分离呢?假设我这个获取菜单列表在HomeController也同样被使用。是否可以采取注入方式呢?分离拆分成接口和服务:interface和service注入Filter private readonly ISysMenuService sysMenuService; public PermissionActionFilterAttribute(ISysMe原创 2022-03-30 14:31:56 · 539 阅读 · 0 评论 -
[C#]读取appsettings.json 文件中文乱码的问题
读取appsettings.json 文件中文乱码的问题最近在做一个指定文件目录下指定文件并自动打开对应程序问题,遇到了读取文件目录中文乱码问题断点调试的时候发现coll得到值中文乱码,在网上找了一些解决方案说是编码的问题要设置成 UTF-8 with sign先说一下这个设置在哪,visual studio界面 工具 =>自定义 => 命令 =>添加命令 =>文件 =>找到高级保存选项点击 然后关闭,这时在visual studio界面就会有高级保存选项我们需要双击原创 2022-03-28 17:22:14 · 1838 阅读 · 1 评论 -
[Core]Asp.Net Core中的各种过滤器(授权、资源、操作、结果、异常)
说明提到过滤器,通常是指请求处理管道中特定阶段之前或之后的代码,可以处理:授权、响应缓存(对请求管道进行短路,以便返回缓存的响应)、 防盗链、本地化国际化等,过滤器用于横向处理业务,符合Aop思想,它也可以有效的避免代码的重复复制。在Asp.Net Core中,有5种过滤器,分别是授权、资源、操作、结果、异常五大过滤器,与之前的Asp.Net 相比,多了一个资源过滤器,剩下的4个授权、 操作、结果、异常过滤器则没有什么太大的区别。PS: 传统Asp.Net 中的4种过滤器参考 https://w.转载 2022-03-20 08:50:59 · 3460 阅读 · 0 评论 -
【netcore】利用asp.net core actionfilter实现简单的RBAC权限过滤
参考这位大神的博客:https://www.cnblogs.com/fonour/p/5848933.html,实现了简单的RBAC权限管理系统,但文章没有提到对权限的过滤,直接输入url还是可以访问未授权功能,在这刚学过滤器,简单实现如下:首先根据他写博客里的MenuAppService,写一个函数根据用户获取所有菜单和按钮:/// /// 根据用户获取功能菜单 /// </summary> /// <param name="userId">用转载 2022-03-20 08:47:17 · 761 阅读 · 0 评论 -
【.net core】利用actionFilter实现session过期自动跳转
利用actionFilter实现session过期自动跳转记得以前在webfrom时代,采用重写page基类方式判断session是否过期,如何在每个页面上继承自定义重写的page类。那么在mvc或netcore中又如何实现呢?搜索了一些方法,网上很多也采用类似webfrom重写Action或Controller的方式实现,确实可以。但同样存在一个问题,每个页面都需要去继承或者标注action的特性。那么我们是否可以反过来思考,只需要在不需要检查的action上进行特性的标记呢?说干就干:自定义F原创 2022-03-19 07:55:19 · 960 阅读 · 0 评论 -
[WebApi]ASP.Net Core 中使用JWT认证(3.1版本,5.0也可以使用)
ASP.Net Core 中使用JWT认证JWT简单介绍开始编码JWT简单介绍关于JWT网上有很多介绍,这里就不介绍了,本文主要以实现为主。JWT由3部分构成:HEADER 、PAYLOAD 、SIGNATUREHEADER :包含token的元数据,主要是加密算法,和签名的类型,如下面的信息,说明了加密的对象类型是JWT,加密算法是HMAC SHA-256{"alg":"HS256","typ":"JWT"}PAYLOAD :主要包含一些声明信息(claim),这些声明是key-v原创 2022-01-25 10:50:31 · 1020 阅读 · 3 评论 -
[Asp.Net Core]ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
引言在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者的心情。或者详细点,或者简单点。那么有没有一种快速有效的方法来构建api说明文档呢?答案是肯定的, Swagger就是最受欢迎的REST APIs文档生成工具之一!为什么使用Swagger作为REST APIs文档生成工具Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试A原创 2022-01-16 08:59:44 · 1133 阅读 · 0 评论 -
[Asp.Net Core]NET5中间件
NET5中间件1.先use 先执行 ,每一次Use一个中间件,其实就是在之前的基础上,套了一层;2.请求来了以后,真正执行的时候,是一层一层的内部执行,然后再执行出来;----俄罗斯套哇 增加程序的扩展性---如果想要增加一层,直接增加一个中间件就可以来完成;中间件的执行,是一个俄罗斯套娃;1.先use 先执行 ,每一次Use一个中间件,其实就是在之前的基础上,套了一层;2.请求来了以后,真正执行的时候,是一层一层的内部执行,然后再执行出来;----俄罗斯套哇 增加程序的扩展性—如果想要增加一层,直接原创 2022-01-11 09:08:52 · 362 阅读 · 0 评论 -
[Asp.Net Core]NET5跨平台的本质
NET5跨平台的本质1.Web应用程序是一个控制台;—Main程序的入口;跨平台的原因在于框架已经内置了主机,只要是程序启动,就是启动了主机,就可以监听端口;请求来了,只要是请求这个端口,主机就可以响应;无论是在Windows还是在Linux下开发,都是要第一步完成环境的;这样就不用拘泥于是在Windows还是在linux,----这就是能够跨平台的本质原因;新的改变 public static void Main(string[] args) {原创 2022-01-10 08:58:28 · 295 阅读 · 0 评论 -
[Asp.Net Core]NET5策略鉴权
之前的角色授权是在代码中把角色定义死了;更希望能够自己来完成校验逻辑;第一步:增加CustomAuthorizationHandler-----专用做检验逻辑的; 要求继承自AuthorizationHandler<> 泛型抽象类; public class CustomAuthorizationHandler :AuthorizationHandler<CustomAuthorizationRequirement> { public Custom原创 2021-12-29 10:29:44 · 381 阅读 · 0 评论 -
[Asp.Net Core]鉴权授权
鉴权授权为了拦截一些操作;传统的授权方式;session/Cookies来完成;1.在请求某个Action之前去做校验,验证当前操作者是否登录过,登录过就有权限2.如果没有权限就跳转到登录页中去AOP–Filter; ActionFilter:传统的登陆,需要匿名;.NET5鉴权授权通过中间件来支持;第一步:在 app.UseRouting();之后,在app.UseEndpoints()之前,增加鉴权授权;鉴权: app.UseAuthentication();—检测用户是否登录授权原创 2021-12-23 09:19:56 · 1053 阅读 · 0 评论