从浅入深了解.NET Core MVC 2.x全面教程【第二章】
二、Logging
1.诊断中间件
- 命名空间:Microsoft.AspNetCore.Diagnostics
- 报告信息并处理异常
2.诊断中间件
- UseDeveloperExceptionPage:开发时使用的异常页面,异常信息
- UseStatusCodePages:返回状态码:400-600
- UserExceptionHandler:指定异常处理器
- UseWelcome:当网站还在建设中
3.ASP.NET Core里的Log系统
- EventSource
- ILogger
- DiagnosticSource
4.ILogger
- 基于Providers
- 内置
- 可扩展使用其他的,或自己构件
5.内置的Log Providers
- Console:控制台
- Debug:VSDebug窗口
- EventSource
- EventLog:写到Windows事件中
- TraceSource:只能应用于完整的.NET Frameword
- Azure App Service
6.Log等级(低级——>高级)
- Trace
- Debug
- Information
- Warning
- Error
- Cirtical
7.添加日志信息
第一个参数是EventID,写一个常量就行;
第二个参数是要记录的日志信息;如果有2个参数就继续往后写就行了;
不建议这么写,写在一起就提出不来了;
8.第三方 Log Provider
- Serilog
- Nlog
- Elmah
9.怎么在ASP.NET Core中使用Serilog?
- 在NuGet中安装【Servilog.AspNetCore】

//如果需要输出到控制台
//输出到文件
- 在【Program.cs】文件中Main方法中进行配置。

- 在【Program.cs】文件中CreateWebHostBuilder方法中进行使用。

三、Filter
1.Filter
- 用于MVC
- 可以在MVC的请求管道里添加逻辑
- 之前、之后
- Cross-cutting concerns:灌穿特性
- 避免代码重复
- 常用场景
- 授权
- 需要Https
2.MVC管道

3.Filter种类
- AuthorizationFilter:鉴权授权
- ResourceFilter:资源过滤器
- ActionFilter:行为方法过滤器
- ExceptionFilter:异常过滤器
- ResultFilter:结果过滤器
4.实现Filter
- IFilterMetadata
- IAtuorizationFilter,IAsyncAuthorizationFilter
- IResourceFilter
- IActionFilter
- IExceptionFilter
- IRestleFilter
5.应用Filter
- Action
- Controller
- 全局

四、缓存
1.缓存的优点?
- 提高网站的访问速度
- 适用于不易改变的数据
2.缓存的缺点?
- 仔细规划
- 奇怪的副作用
3.缓存的地点?
- 服务器
- 缓存服务器
- 客户端
4.In-Memory缓存
- 内存缓存
- IMemoryCache
- 适用于Sticky Seesion(使用单机服务)
- 适用于任何类型的对象
5.MemoryCacheEntryOptions
- Absolute expiration time:绝对过期时间
- Sliding expiration time:可调的过期时间
- 缓存优先级
- PostEvictionDelegate
6.怎么使用缓存?
- 现在【Sartup.cs】的【ConfigureServices】方法中注册缓存:

- 定义一个常量,用来做Key

- 构造函数依赖注入缓存

- 使用缓存

7.Cache Tag Helper
- @await Component.IncokeAsync("xxx")
- 服务器端
- 使用IMemoryCache
- Sticky Session
8.Cache Tag Helper属性
- Enabled:是否启用
- expires-on:绝对的过期时间
- expires-after:时间长度
- expires-sliding:可调的过期时间
- vary-by-header:请求
- vary-by-query
- vary-by-cookie
- vary-by-user
- vary-by
- priority:优先级设置
9.分布式缓存_1

10.分布式缓存_2
- 无需Sticky Seesion
- 可扩展
- 服务器重启不会缓存
- 性能更好
11.分布式缓存的接口名、方法?
- IDistributedCache
- Get,GetAsync
- Set,SetAsync
- Refresh,RefreshAsync
- Remove,RemoveAsync
12.分布式缓存有哪几种?
- 分布式Memory Cache:只适合开发时应用
- 分布式 Sql Server Cache
- 分布式 Redis Cache:实际中使用这个最多
13.怎么使用Readis分布式缓存?
- 安装Redis(使用Docker安装)


连接、运行Redis
- 在VS项目中安装Redis

- 在【Startup.cs】的【ConfigureService】方法中进行注入。

- 在Controller中构造函数依赖注入

- 使用分布式缓存

14.Response缓存(响应缓存、客户端缓存)
- 基于Header
- 客户端缓存
- 使用ResponseCache这个Attribute
15.Reponse缓存参数?
- Location:设置缓存在哪
- Duration:设置缓存时间的长短
- NoStore:不应该设为缓存
- VaryByHeader:设置通过检查哪个Header的值决定缓存
16.如何使用Reponse缓存?
- 在【Startup.cs】注册Reponse缓存

- 在控制器中写代码;

也可以使用之前注册的
17.压缩
- 压缩传输的数据:1k以上的数据,如CSS、JS等可以进行压缩;
如何使用呢?
(1)在【Program.cs】中【ConfigureServices】方法中注册服务
(2)在【Program.cs】中【Configure】使用服务
没介绍完,看文档...
五、VSTS(后改名:Azure DevOps)
1.Azure DevOps
- Saas
- 完整的DevOps的解决方案
- 与技术无关
- 基于Azure
- 集成开发团队的环境
2.Azure DevOps组件
- 源码控制
- 计划
- CI
- 发布管理
- 测试
- ...
3.CI-Continuouts Integeration(持续集成)
4.Azure Devops -CI
- Build连接到测试,工作项...
- 宿主代理
- 针对报告
- 支持多种语言凭他
从浅入深了解.NET Core MVC 2.x全面教程【第二章】的更多相关文章
- 浅入深出之Java集合框架(上)
Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出之Java集合框架(中)
Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出之Java集合框架(下)
Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...
- 浅入深出Vue:环境搭建
浅入深出Vue:环境搭建 工欲善其事必先利其器,该搭建我们的环境了. 安装NPM 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版本的NodeJS Windows安装程序 下载下来后,直 ...
- 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置
浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...
- 浅入深出Vue:工具准备之WebStorm安装配置
浅入深出Vue之工具准备(一):WebStorm安装配置 工欲善其事必先利其器,让我们先做好准备工作吧 导航篇 WebStorm安装配置 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版 ...
- 浅入深出Vue系列
浅入深出Vue导航 导航帖,直接点击标题即可. 文中所有涉及到的资源链接均在最下方列举出来了. 前言 基础篇 浅入深出Vue:工具准备之WebStorm搭建及配置 浅入深出Vue之工具准备(二):Po ...
- 浅入深出Vue:前言
浅入深出Vue系列文章 之前大部分是在做后端,后来出于某些原因开始接触Vue.深感前端变化之大,各种工具.框架令人眼花缭乱.不过正是这些变化,让前端开发更灵活. 博主在刚开始时,参考官网的各个步骤以及 ...
- 『浅入深出』MySQL 中事务的实现
在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇文章中,我们将对事务的实现进行分析,尝 ...
- 浅入深出Vue:第一个页面
今天正式开始入门篇,也就是实战了~ 首先我们是要做一个博客网站,UI 框架采用江湖传闻中的 ElementUI,今天我们就来利用它确定我们博客网站的基本布局吧. 准备工作 新建一个vue项目(可以参考 ...
随机推荐
- 在chatGPT的帮助下成功从Rancher中删除无效的集群
只要你坚持,不放弃,问题总有解决的一天! 与chatgpt进行了几次沟通,成功解决历史遗留问题,成功从rancher中删除了无效的集群 chatGPT回答1 如果您在 Rancher UI 中无法删除 ...
- 2021-12-25:给定一个只由0和1组成的字符串S,假设下标从1开始,规定i位置的字符价值V[i]计算方式如下
2021-12-25:给定一个只由0和1组成的字符串S,假设下标从1开始,规定i位置的字符价值V[i]计算方式如下 : 1 i == 1时,V[i] = 1: 2 i > 1时,如果S[i] ! ...
- 2021-09-05:单词搜索 II。给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过 相邻的
2021-09-05:单词搜索 II.给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词.单词必须按照字母顺序,通过 相邻的 ...
- vue全家桶进阶之路18:Vue Router
Vue Router 是 Vue.js 的官方路由管理器,它可以帮助我们实现单页应用(Single Page Application,SPA)的前端路由. Vue Router 基于 Vue.js 的 ...
- 【GiraKoo】Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
[解决]Could NOT find PkgConfig (missing PKG_CONFIG_EXECUTABLE) 环境 Ubuntu 22.04 现象 在编写CMakeLists.txt时,调 ...
- Android Create New Module 提示Project needs to be converted to androidx.* dependencies
最近在一个flutter项目中创建一个android plugin module提示androidx依赖问题 finish始终无法激活,最后参照flutter官方https://flutter.dev ...
- JS基础语法(一)
javascript简介 javascrpit是是一种轻量级的编程语言,常用于web前端开发.另外js还可以用来写node.js类型的服务和工具,在测试web项目的时候需要了解. 变量 js定义变量有 ...
- Spring Cloud灰度部署
1.背景(灰度部署) 在我们系统发布生产环境时,有时为了确保新的服务逻辑没有问题,会让一小部分特定的用户来使用新的版本(比如客户端的内测版本),而其余的用户使用旧的版本,那么这个在Spring Clo ...
- string类型可以作为lock的锁对象吗
lock 关键字介绍 lock 关键字是用于在多线程编程中实现同步和互斥访问的关键字.它的作用是确保共享资源在任意时刻只能被一个线程访问,从而避免出现竞态条件(race condition)和数据不一 ...
- FreeFileSync结合任务计划实现T级数据的全量备份和每日十几G数据的增量自动备份
1. 背景 公司现有nas存储中有共计1.8T左右的文件数据(一般是pdf.excel.图片.压缩文件等等格式),因为nas无法做备份:担心后面nas出现故障造成数据丢失,现急需一个解决方案实现如下目 ...