ASP.NET Core

.NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记

浪尽此生 提交于 2020-12-21 16:24:11
2.2.2 核心模块--日志 ILogger 的使用 日志的 ID 日志的分类 日志的级别 LoggerProvider 日志的最佳实践 .NET Core 和 ASP.NET Core 中的日志记录:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0 ILogger 的使用 在 Get 方法中添加日志 WeatherForecastController.cs private readonly ILogger<WeatherForecastController> _logger; public WeatherForecastController(ILogger<WeatherForecastController> logger) { _logger = logger; } _logger.LogInformation("Get action executed"); 日志的 ID _logger.LogInformation(new EventId(1001, "Action"), "Get action executed"); 日志的分类 根据不同的类名区分 private readonly ILogger<WeatherForecastController>

ASP.NET Core ActionFilter引发的一个EF异常

◇◆丶佛笑我妖孽 提交于 2020-12-21 15:08:31
最近在使用ASP.NET Core的时候出现了一个奇怪的问题。在一个Controller上使用了一个ActionFilter之后经常出现EF报错。 InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe. Microsoft.EntityFrameworkCore.Internal.ConcurrencyDetector.EnterCriticalSection() 这个异常说Context在完成前一个操作的时候第二个操作依据开始。这个错误还不是每次都会出现,只有在并发强的时候出现,基本可以判断跟多线程有关系。看一下代码: public static class ServiceCollectionExt { public static void AddAgileConfigDb(this IServiceCollection sc) { sc.AddScoped<ISqlContext, AgileConfigDbContext>(); } } [TypeFilter(typeof

Dapr微服务应用开发系列0:概述

醉酒当歌 提交于 2020-12-19 14:51:04
题记:Dapr是什么,Dapr包含什么,为什么要用Dapr。 Dapr是什么 Dapr( D istributed Ap plication R untime),是微软Azure内部创新孵化团队的一个开源项目,皆在解决微服务应用开发过程的一些共性问题。以官方文档的说法,Dapr是一个可移植、事件驱动的运行时,让企业开发者更容易利用各种语言和框架构建柔性、无状态和有状态的微服务应用,并运行在云端和边缘。 Dapr的核心由Go语言写成,开发团队一开始有计划使用.NET Core/C#来写,但是考虑到社区的接受程度,遂最终选定Go作为开发语言。当然,还是可以使用任何语言和框架来编写Dapr的扩展功能。由于Dapr要解决的问题确实是大家面临的一些痛点,并且Dapr的设计也独树一帜,所以一经开源,就成为GitHub上Star增长最快的开源项目之一,甚至达到5K Star的速率超过了Kubernetes。 Dapr包含什么 Dapr做的事情很简单,就是利用Sidecar的模式,把代码中的一些横切关注点需求(Cross-cutting)分离和抽象出来,从而达到 运行环境的独立 和 对外部依赖(包括服务之间)的独立 。 这种独立的途径就是使用开放协议(HTTP和gRPC)来代替依赖特定协议。如下图所示: 从上图我们可以看到,使用Dapr开发的微服务应用理论上可以部署到任意的云提供商、边缘设备

Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

烂漫一生 提交于 2020-12-19 13:03:20
# Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图。那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储,然后使用SixLabors作为图片处理,通过一个Asp.Net Core Web Api实例来给大家讲解下!本文有点长,可以先收藏推荐然后再看! 本文地址: https://www.cnblogs.com/yilezhu/p/9297009.html 作者:yilezhu 写在前面 阅读本文章,需要你具备asp.net core的基础知识,至少能够创建一个Asp.Net Core Web Api项目吧!其次,我不会跟你说MongoDB是什么以及为什么选择MongoDB作为文件存储这样的问题,因为百度百科已经给你说了, MongoDB 是一个基于分布式文件存储的数据库。实在不清楚的话自己去看百度百科吧! MongoDB在Windows下的下载安装以及配置 你可以从MongoDB官网下载安装。下载地址: https://www.mongodb.com/download-center#community 。如下图所示: 下载之后一路next基本就能完成。当然还是给新手朋友一些图文操作吧

ASP.NET Core Web Api之JWT(一)

99封情书 提交于 2020-12-19 08:02:06
最近沉寂了一段,主要是上半年相当于休息和调整了一段时间,接下来我将开始陆续学习一些新的技能,比如Docker、Jenkins等,都会以生活实例从零开始讲解起,到时一并和大家分享和交流。接下来几节课的内容将会讲解JWT,关于JWT的原理解析等等大有文章,就不再叙述,这里我们讲解使用和一些注意的地方。 在.NET Core之前对于Web应用程序跟踪用户登录状态最普通的方式则是使用Cookie,当用户点击登录后将对其信息进行加密并响应写入到用户浏览器的Cookie里,当用户进行请求时,服务端将对Cookie进行解密,然后创建用户身份,整个过程都是那么顺其自然,但是这是客户端是基于浏览器的情况,如果是客户端是移动app或者桌面应用程序呢? 关于JWT原理可以参考系列文章https://www.cnblogs.com/RainingNight/p/jwtbearer-authentication-in-asp-net-core.html,当然这只是其中一种限制还有其他。 如果我们使用Json Web Token简称为JWT而不是使用Cookie,此时Token将代表用户,同时我们不再依赖浏览器的内置机制来处理Cookie,我们仅仅只需要请求一个Token就好。 这个时候就涉及到Token认证,那么什么是Token认证呢? 一言以蔽之: 将令牌

ASP.NET Core快速入门(第3章:依赖注入)--学习笔记

你。 提交于 2020-12-19 06:19:30
课程链接: http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务16:介绍 1、依赖注入概念详解 从UML和软件建模来理解 从单元测试来理解 2、ASP.NET Core 源码解析 任务17:从UML角度来理解依赖 1、什么是依赖 当一个类A完成某个任务需要另一个类B来帮助时,A就对B产生了依赖 例如CustomerController需要对customer进行新增或查找时用到EF,则对EF的Context产生了依赖 var context = new CustomerContext(new DbContextOptions<CustomerContext>{}); 2、显示依赖与隐式依赖 显示依赖:把一个类用到的所有外部组件放到一个类最上面,在构造函数里面初始化 private CustomerContext _context; public CustomerController() { _context = new CustomerContext(new DbContextOptions<CustomerContext>{}); } 隐式依赖:需要用到的地方再初始化,不推荐 var context = new CustomerContext(new DbContextOptions<CustomerContext>

有关Quartz.NET,与一线码农大佬对个线?

吃可爱长大的小学妹 提交于 2020-12-18 18:29:07
跟[一线码农大佬]翻译的某技术文对个线 最近看到一线码农大佬翻译的《 如何在 ASP.NET Core 中使用 Quartz.NET 执行任务调度 》, 行文思路: 安装Quartz.NET Quartz.NET 中的Job,triggers 和 Schedulers 创建 Scheduler 开启和停止 scheduler 创建 job 工厂 创建 JobMetadata 存储你的 job 元数据 不可否认,一线大佬的翻译文还是相当精准的, 但个人认为这篇文章的底稿有点 硬输出 ,并没有以一个流畅、直观的编码思路来讲述[如何在ASP.NET Core中使用Quartz.NET 执行定时任务]。 尤其是下面这段: 想起我之前也写了《 ASP.NET Core+Quartz.Net实现web定时任务 》, 文章以一个简单的定时任务讲述了Quartz.NET在ASP.NET Core中的应用思路,遇河架桥,遇山开路。 这里我要解释一下上图中:为什么要自定义一个Job工厂? 先看下官方JobFactory的作用: 大意是说: 如果某触发器被触发,该触发器关联的Job将被调度器上配置的 JobFactory 初始化; Quartz.NET默认的 SimpleJobFactory 工厂类,是利用 反射+无参构造函数 构造出Job实例。 翻源码: //---------------

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 16. 角色管理

倖福魔咒の 提交于 2020-12-18 07:54:34
注入UserManager和RoleManager 建立View页面.这段视频中没有录。 RoleManager的服务没有注册 注册的地方进行修改 再次运行就可以了 这个ViewModel实际上只需要角色的名称就可以了 添加失败就循环错误Model级别的错误 这块代码也没有录制 测试结果 编辑角色 可以给这个角色里面添加一些用户 建立EditRole.cshtml 具体代码没录 这块代码也没录 删除角色也没录 运行效果 还需要实现往 橘色里面添加用户和角色里面把用户移除 在这个页面做角色用户的列表 写Action。添加用户到角色 users就是后选用户的意思,没在角色里的用户 只有没有在这个角色里的用户才可以用户添加到这个角色 建立view 下拉的代码 这段代码也没录 效果 修改一下样式 从角色移除用户功能就不做了 自己去做’ 来源: oschina 链接: https://my.oschina.net/u/4381386/blog/3522918

解锁环境变量在云原生应用中的各种姿势

跟風遠走 提交于 2020-12-18 05:05:28
应用程序在某些时刻总是需要一些外挂配置,云原生应用的实践是 在容器化之前就将应用程序配置保留在代码之外。 “ 12-Factors App :Store config in the environment ① 外挂配置文件:业务配置 appsettings.json “ 可以在代码中要求加载appsetting.serect.json配置文件,但是不加入代码版本管理==>敏感信息分离。 ② 环境变量: 单条业务配置(API_URL_PREFIX) 框架配置(ASPNETCORE_ENVIRONMENT=Production) 部署配置(Tag=v1.2) 敏感信息(AppId,AppAuthIssuer,AppSerect) 环境变量 现代操作系统均支持存储key-value环境变量,所有程序都能从OS获取特定环境变量。 ASP.NET Core默认脚手架:环境变量配置在第4位置插入 “ IConfiguration会拷贝环境变量键值对,后续同名配置会覆盖之前同名配置值,但是环境变量本身不会变化。 public static string? GetEnvironmentVariable(string variable); 环境变量来自三个级别:进程、用户、系统 // Specifies the location where an environment variable is

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 26. 缓存

风格不统一 提交于 2020-12-17 15:39:42
In-Memory 使用IMemeryCache接口 注册缓存 HomeController注入进来 建一个类,用来存缓存的常量 判断缓存里面是否有数据,如果没有就读数据库存起来。 设置缓存事件,可调的 30秒。如果缓存的值被访问了就延长30秒 绝对过期,600秒 缓存被清空之后,调用回调方法,再填充回去 Cache Tag Helper 属性: enabled:是否启用 expires-on:绝对过期时间 expires-after: expires-sliding vary-by-header:如果请求的 header 变了,缓存就需要刷新 vary-by-query vary-by-route vary-by-cookie vary-by-user vary-by priority 过期事件设置为30秒 分布式缓存 分布式缓存的特点 类型: 分布式 Memory Cache(仅适合开发时使用) 分布式 Sql Server Cache 分布式 Redis Cache(推荐) 从docker中拉取redis的镜像 简历容器 正在运行 注册redis 转换成json字符串后还需要转换成byte类型 else的情况 容器内把端口暴露出来 运行页面走到断点这里了 Response 缓存 它是一种客户端的缓存,减轻服务端压力 再设置另外一个 在客户端缓存 另外一种用法 压缩