【详解.NET Core 3.0中的新变化】教程文章相关的互联网学习教程文章

ASP.NET Core实现自定义WebApi模型验证详解

Framework时代  在Framework时代,我们一般进行参数验证的时候,以下代码是非常常见的 [HttpPost]public async Task<JsonResult> SaveNewCustomerAsnyc(AddCustomerInput input){if (!ModelState.IsValid){return Json(Result.FromCode(ResultCode.InvalidParams));}.....}  或者高级一点是实现IActionFilter进行拦截,如下:   public class ApiValidationFilter : IActionFilter{public bool AllowMultiple => false;publi...

Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解【图】

1、前言 为什么我们要隐藏部分接口? 因为我们在用swagger代替接口的时候,难免有些接口会直观的暴露出来,比如我们结合Consul一起使用的时候,会将健康检查接口以及报警通知接口暴露出来,这些接口有时候会出于方便考虑,没有进行加密,这个时候我们就需要把接口隐藏起来,只有内部的开发者知道。 为什么要分组? 通常当我们写前后端分离的项目的时候,难免会遇到编写很多接口供前端页面进行调用,当接口达到几百个的时候就需要区...

ASP.NET Core利用Jaeger实现分布式追踪详解【图】

前言最近我们公司的部分.NET Core的项目接入了Jaeger,也算是稍微完善了一下.NET团队的技术栈。 至于为什么选择Jaeger而不是Skywalking,这个问题我只能回答,大佬们说了算。 前段时间也在CSharpCorner写过一篇类似的介绍 Exploring Distributed Tracing Using ASP.NET Core And Jaeger。 下面回到正题,我们先看一下Jaeger的简介 Jaeger的简单介绍Jaeger是Uber开源的一个分布式追踪的工具,主要为基于微服务的分布式系统提供监测和...

详解.net core webapi 前后端开发分离后的配置和部署【图】

背景:现在越来越多的企业都采用了在开发上前后端分离,前后端开发上的分离有很多种,那么今天,我来分享一下项目中得的前后端分离。 B/S Saas 项目:(这个项目可以理解成个人中心,当然不止这么点功能) 前端:node.js + vue 后端:.net core webapi 前端安装 node.js 跟创建vue项目这些不是这篇文章的重点,重点在于项目完成后的部署。 .net corewebapi创建后,默认就创建了一个wwwroot的文件夹,这个文件夹是用来放置静态文件的...

详解ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁【图】

引言:最近回头看了看开发的.Net Core 2.1项目的复盘总结,其中在多处用到Redis实现的分布式锁,虽然在OnResultExecuting方法中做了防止死锁的处理,但在某些场景下还是会发生死锁的问题,下面我只展示部分代码:问题: (1)这里setnx设置的值“1”,我想问,你最后del的这个值一定是你自己创建的吗? (2)图中标注的步骤1和步骤2不是原子操作,会有死锁的概率吗? 大家可以思考一下先,下面让我们带着这两个问题往下看,下面介绍...

详解.Net Core 权限验证与授权(AuthorizeFilter、ActionFilterAttribute)

在.Net Core 中使用AuthorizeFilter或者ActionFilterAttribute来实现登录权限验证和授权 一、AuthorizeFilter新建授权类AllowAnonymous继承AuthorizeFilter,IAllowAnonymousFilterpublic class AllowAnonymous : AuthorizeFilter, IAllowAnonymousFilter {}新建拦截类继承AuthorizeFilterpublic class LoginAuthorzation : AuthorizeFilter {}在拦截类里加入处理请求的方法 /// <summary>/// 请求验证,当前验证部分不要抛出异常,...

.net core并发下线程安全问题详解【图】

抱歉,其实内容并不如题!!! 背景(写测试demo所出现的异常,供大家学习与拍砖): .net core webapi项目,做了一个授权的filter(真正的生产项目的话,JWT很棒),单个接口测试没有问题,当用前端在同一个页面调用多个接口的时候,运行服务,打开页面,然后……Exceptions……(真正的开发中大家应该也会遇到) 异常1:An attempt was made to use the context while it is being configured. A DbContext instance cannot be u...

详解.NET Core使用Quartz执行调度任务进阶【图】

一、前言运用场景 Quartz.Net是一个强大、开源、轻量的作业调度框架,在平时的项目开发当中也会时不时的需要运用到定时调度方面的功能,例如每日凌晨需要统计前一天的数据,又或者每月初需要统计上月的数据。当然也会出现既要统计日的也统计月的还需要进行其他的操作。那我们改如何来写这样的调度任务呢? 二、实际运用(.Net Core 2.2) 在一个解决方案中创建一个.Net控制台应用程序及一个类库,控制台应用程序用来作为程序的启动点...

.net core如何在网络高并发下提高JSON的处理效率详解

前言 现有的webapi一般都基于JSON的格式来处理数据,由于JSON是一个文本类的序列化协议所以在性能上自然就相对低效一些。在.net中常用Newtonsoft.Json是最常用的组件,由于提供简便基于完整的json的String方法使用起来非常方便;但也正是这原因导致Newtonsoft.Json在性能上一直被说慢,虽然Newtonsoft.Json提供Stream的方式来处理JSON不过想复用writer和reader还是需要一些应用技巧。如果需要在网络通讯中应用JSON,那在这里介绍一下...

详解asp.net core重新加载应用配置【图】

asp.net core重新加载应用配置Intro 我把配置放在了数据库或者是Redis里,配置需要修改的时候我要直接修改数据库,然后调用一个接口去重新加载应用配置,于是就尝试写一个运行时重新加载配置的接口。 Configuration 重新加载实现 重新加载配置的接口其实很简单,经过看 Configuration 的源码可以知道,如果想要重新加载应用配置,需要一个 IConfigurationRoot 对象,而 IConfigurationRoot 其实可以直接拿注入服务中的 IConfigurat...

详解.net core日记记录

ASP.NET Core 有内置的log组件,遗憾的是看了微软官方文档,貌似无法直接将日志存于文件或数据库,只能由自己实现或引用第三方日志组件。 以下为Nlog和log4net的使用记录 Nlog使用 搜索添加Nuget包Nlog Nlog.Web.AspNetCore新建一个xml文件,并改名为nlog.config XML内容如下(可配置日志目录名称、输出格式): <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="h...

如何使用Rotativa在ASP.NET Core MVC中创建PDF详解【图】

前言 在本文中,我们将学习如何使用Rotativa.AspNetCore工具从ASP.NET Core中的视图创建PDF。如果您使用ASP.NET MVC,那么Rot??ativa工具已经可用,我们可以使用它来生成pdf。 创建一个MVC项目,无论您是core或不core,都可以nuget下包.命令如下: Install-Package Rotativa #或者 Install-Package Rotativa.AspNetCore这个工具由意大利人Giorgio Bozio创建。他需要在ASP.NET MVC中生成pdf,并且重复的任务是设置一种方法来创建PDF...

.net core高吞吐远程方法如何调用组件XRPC详解【图】

前言 XRPC的目标非常明确,就是给.net core平台实现一个百万级别的远程方法调用RPC通讯组件。它的设计理念和GRPC一样,基于连接复用的机制实现高吞的性能;XRPC采用了HTTP2复用的思想,在协议设计上也类似文本和二进制相结合;在应用层面并没使用消息而是基于接口代理的方式让使用更简便。 协议序列化XRPC采用了基于文本+二进制相结合的通讯协议,头以文本的方式表现主要是描述请求的位置和附加信息,这样设计的好处就是在实现网关...

.net core webapi jwt 更为清爽的认证详解

我的方式非主流,控制却可以更加灵活,喜欢的朋友,不妨花一点时间学习一下 jwt认证分为两部分,第一部分是加密解密,第二部分是灵活的应用于中间件,我的处理方式是将获取token放到api的一个具体的controller中,将发放token与验证分离,token的失效时间,发证者,使用者等信息存放到config中。 1.配置: 在appsettings.json中增加配置 "Jwt": { "Issuer": "issuer",//随意定义 "Audience": "Audience",//随意定义 "SecretKey": "...

DotNetCore深入了解之HttpClientFactory类详解

当需要向某特定URL地址发送HTTP请求并得到相应响应时,通常会用到HttpClient类。该类包含了众多有用的方法,可以满足绝大多数的需求。但是如果对其使用不当时,可能会出现意想不到的事情。 using(var client = new HttpClient())对象所占用资源应该确保及时被释放掉,但是,对于网络连接而言,这是错误的。 原因有二,网络连接是需要耗费一定时间的,频繁开启与关闭连接,性能会受影响;再者,开启网络连接时会占用底层socket资源,...