
.NET Core
文章平均质量分 79
娃都会打酱油了
世界本来就是不公平的,怨天尤人、自怨自艾又有何用,何不努力一把。
展开
-
.Net项目github接入sonarcloud
代码质量方面的检测工具,在这之前从来没用过,就算前阵子听说了sonarcloud,也仅当知道记录了下,结果昨天被某些事情刺激了下,于是去查了下资料,然后就顺便在github上做了下测试,这里做个记录。sonarcloud的官网地址是https://sonarcloud.io,打开后点击Log in,在打开的界面中选择With GitHub进行登录授权后,按界面一路点击下去,在导入完账号组织信息后,就可以选择你要对哪些项目做QA,如果不花钱只能选择开源项目,选完后就会出来配置以下界面然后你就可以点击原创 2022-03-04 15:00:09 · 7269 阅读 · 0 评论 -
记录一次生产环境Net Core应用内存暴涨导致OOM的排查过程
事情起源于某个周五,刚开始是突然发现生产服务不能访问,请求时居然直接提示服务器拒绝响应,然后连用于管理生产环境的Portainer虽然能打开,但登录右上角直接出红色告警信息无法接收服务器信息,进去后所有的node都不显示!生产环境跑了二年多了,还是第一次出现这种异常情况,既然一头雾水不知道啥情况,那IT维护的绝活重启大法必须得用起来啊,麻溜的sudo systemctl restart docker命令一出,整个docker重启完毕后,世界立刻恢复如常。相安无事的度过了完美的周末,周一过来,屁股刚坐下,就原创 2021-12-12 01:13:45 · 4964 阅读 · 4 评论 -
.Net Core下简单的JWT黑名单中间件
自从JWT认证方式在互联网上蔓延后,Session认证方式就被挤掉了一大半的生存空间,这里我们不讲JWT与Session两种方式的优缺点,我们只讲如何通过JWT的黑名单来阻止某些Token的登录。设置黑名单,也就是说要将Token写入某个存储介质,然后考虑数据并不需要一直存在,其在有效期之后应自动释放,那这种情况下存储介质首选肯定是缓存,鉴于目前流行容器化技术,微服务概念又漫天飞的情况,缓存还得考虑支持分布式,那妥妥的必选方案就是IDistributedCache,这样究竟是单体应用MemoryCache原创 2021-08-12 10:53:49 · 1165 阅读 · 1 评论 -
.Net Core中AuthorizationHandlerContext如何获取当前请求的相关信息
在.Net Core中要自定义用户身份认证,需要实现IAuthorizationHandler,实现的代码也比较简单,一般我们只要实现本地认证AuthorizationHandler<T>.HandleRequirementAsync即可,认证时一般需要用到一些用于判断是否允许访问的认证信息,比如当前的用户信息,比如当前请求的资源信息,这些信息呢,我们都可以通过AuthorizationHandlerContext来获取。AuthorizationHandlerContext.Resource原创 2021-07-29 10:00:01 · 4997 阅读 · 6 评论 -
Asp.Net Core默认注入方式下多接口实现如何注入以及如何指定构造函数注入
多接口实现注入一般情况下,我们只需要注入定义的接口以及相应的实现,最多也就是某个接口会有多个实现,也就是多态,但因为C#是允许实现多接口,也就是某个类实现了多个接口定义,那这种情况下,又该如何注入呢?假设我们分别有接口IMutiInterface01和IMutiInterface02,每个接口都各自包含获取一个Id值的方法,以及他们的实现类MultiInterfaceImplt,该类的两个实现均返回同一个Guid,为了方便直观,这里没有把两个接口的方法设定为相同的名称,感兴趣的同学也可以将两个接口约定改原创 2021-07-05 18:27:57 · 2851 阅读 · 0 评论 -
记录一次Nginx转发请求给Ocelot网关响应500错误排查
先说明下我们的Http请求流转及系统部署方式:当Http请求发起时,会先到达Nginx,然后Nignx会将请求转发至Ocelot网关服务,Ocelot网关服务会再将请求转发给下游真实提供API服务的应用,我们的应用是基于Net Core 3.1,服务提供方式也是默认的Kestrel,然后所有的服务均部署在Linux环境的Docker容器中,容器的管理工具为Portainer。产生500错误的是一个新的API接口,在这个接口之前,系统已经运行了一年多,从没产生过类似的问题,这个500还不是必定产生,多次请求原创 2021-05-08 20:19:12 · 2597 阅读 · 1 评论 -
ABP EF Core多数据库支持
ABP官方Demo中提供了在EF Core中如何实现多数据库支持的例子,但Demo说明文档中对于要做哪些修改没做说明,所以本文在此做下说明。首先要说明的是(我这边通过官方模板生成时输入的项目名称为TaobaoAuthorization),除了ConnectionStringName声明是在TaobaoAuthorizationConsts中外,所有修改均在TaobaoAuthorization....原创 2018-12-26 16:29:54 · 9728 阅读 · 3 评论 -
第三方系统如何与阿里商旅进行对接
经过一周半的时间,终于实现了第三方系统对接阿里商旅API,通过将审批通过的差旅申请单同步到阿里商旅,来实现员工先在企业内部系统(比如OA)进行申请,申请通过后,再通过阿里商旅来进行机票、酒店之类的预定这样一个完整的差旅申请流程,因为过程比较曲折,而且如果你打阿里商旅客服电话,对方也会回复目前已不再支持通过API同步到阿里商旅这样的方案,所以此处特做记录,方便后续有业务需求要接入阿里商旅的同学。准...原创 2018-11-29 20:04:57 · 7220 阅读 · 4 评论 -
NET Standard/Core中配置使用TargetFrameworks输出多版本类库及测试
在core之前,要使一个项目支持多个Frame版本,那么可行的办法就是创建多个版本的项目,然后以一个项目为主体,其它版本以添加--现有项--添加为链接的方式将代码文件添加到对应版本中,如果代码不同,则需要使用#if标签,而在core之后,如果需要发布多版本,可以不再需要创建多个项目,这里以VS2017为例首先我们创建一个项目,可以是Standard类库,也可以是Core应用,这里我选择创建一个...原创 2017-12-19 11:48:27 · 19815 阅读 · 3 评论 -
ASP.NET Core 如何记录每次响应的Response信息
上一篇文章中我们已经成功的记录了Request部分的信息,现在我们来看下如何记录Response的内容。相比于Request,Response额外多了个StatusCode,然后内容都是通过Body读取,不过不同于Request.Body的只读,Response.Body是个只写的数据流。可以看到默认Response.Body数据流数据类型为Microsoft.AspNetCore.Serv...原创 2018-09-26 14:24:35 · 10110 阅读 · 1 评论 -
ASP.NET Core 如何记录每次请求的Request信息
在NFX中,我们可以很简单的通过DelegatingHandler来记录每次请求的Request和Response部分信息,但在ASP.NET Core中却行不通了,因为在Core中,我们无法使用Handler,只能通过Middleware中间件来捕获请求。本篇内容基于ASP.NET Core 2.1版本。在ASP.NET Core中,一般我们都会在Startup的Configure方法中...原创 2018-09-17 11:01:02 · 17834 阅读 · 1 评论 -
ASP.NET Core默认注入方式下如何注入多个实现(多种方式)
在我们开发过程中,对于服务来说,一般我们定义interface实现均只存在一个具体实现(有人戏称这种情况为十代单传模式),这时候Core默认的注入方式已经支持我们的需求,但对于某些抽象定义实现来讲,我们可能会有多种具体实现,在项目中,我们可能会按照具体需求选用不同的实现。首先先具体下我们的业务场景例子,假设我们有以下interface及它的两个具体实现 public interfac...原创 2018-07-30 11:52:44 · 11360 阅读 · 1 评论