blogsystem

学习ASP.NET Core(10)-全局日志与xUnit系统测试

眉间皱痕 提交于 2020-08-11 18:33:27
上一篇我们介绍了数据塑形,HATEOAS和内容协商,并在制器方法中完成了对应功能的添加;本章我们将介绍日志和测试相关的概念,并添加对应的功能 一、全局日志 在第一章介绍项目结构时,有提到.NET Core启动时默认加载了日志服务,且在appsetting.json文件配置了一些日志的设置,根据设置的日志等级的不同可以进行不同级别的信息的显示,但它无法做到输出固定格式的log信息至本地磁盘或是数据库,所以需要我们自己手动实现,而我们可以借助日志框架实现。 ps:在第7章节中我们记录的是数据处理层方法调用的日志信息,这里记录的则是ASP.NET Core WebAPI层级的日志信息,两者有所差异 1、引入日志框架 .NET程序中常用的日志框架有log4net,serilog 和Nlog,这里我们使用Serilog来实现相关功能,在BlogSystem.Core层使用NuGet安装 Serilog.AspNetCore ,同时还需要搜索 Serilog.Skins 安装希望支持的功能,这里我们希望添加对文件和控制台的输出,所以选择安装的是 Serilog.Skins.File和Serilog.Skins.Console 需要注意的是Serilog是不受appsetting.json的日志设置影响的,且它可以根据命名空间重写记录级别。还有一点需要注意的是

学习ASP.NET Core(08)-过滤搜索与分页排序

拟墨画扇 提交于 2020-07-27 07:21:12
上一篇我们介绍了AOP的基本概览,并使用动态代理的方式添加了服务日志;本章我们将介绍过滤与搜索、分页与排序并添加对应的功能 注:本章内容大多是基于solenovex的 使用 ASP.NET Core 3.x 构建 RESTful Web API 视频内容,若想进一步了解相关知识,请查看原视频 一、过滤与搜索 1、定义 1、什么是过滤?意思就是把某个字段的名字及希望匹配的值传递给系统,系统根据条件限定返回的集合内容; 按点外卖的例子来说,食物类别、店铺评分、距离远近等过滤条件提供给你,您自个儿根据需求筛选,系统返回过滤后的内容给你; 2、什么是搜索?意思就是把需要搜索的值传递给系统,系统按照其内部逻辑查找符合条件的数据,完成后将数据添加到集合中返回; 还是按点外卖的例子来说,一哥们张三特别喜欢吃烧烤,他在搜索栏中搜索烧烤,会出现什么?食物类别是烧烤的,店铺名称是烧烤的,甚至会有商品名称包含烧烤的,当然具体出现什么还要看系统的内部逻辑; 3、相同点及差异 相同点:过滤和搜索的参数并不是资源的一部分,而是使用者根据实际需求自行添加的; 差异:过滤一般是一个完整的集合,根据条件把匹配或不匹配的数据移除; ​ 搜索一般是一个空集合,根据条件把匹配或不匹配的数据往里面添加 2、实际应用 1、在前面的章节我们有提到过数据模型的概览,即用户看到的和存储在数据库的可能不是一个字段

学习ASP.NET Core(11)-解决跨域问题与程序部署

狂风中的少年 提交于 2020-07-26 17:46:31
上一篇我们介绍了系统日志与测试相关的内容并添加了相关的功能;本章我们将介绍跨域与程序部署相关的内容 一、跨域 1、跨域的概念 1、什么是跨域? 一个请求的URL由协议,域名,端口号组成,以百度的https://www.baidu.com为例,协议为https,域名由子域名www和主域名baidu组成,端口号若为80会自动隐藏(也可以配置为其它端口,通过代理服务器将80端口请求转发给实际的端口号)。而当请求的URL的协议,域名,端口号任意一个于当前页面的URL不同即为跨域 2、什么是同源策略? 浏览器存在一个同源策略,即为了防范跨站脚本的攻击,出现跨域请求时 浏览器会限制自身 不能执行其它网站的脚本(如JavaScript)。所以说当我们把项目部署到Web服务器后,通过浏览器进行请求时就会出现同源策略问题;而像PostMan软件因其是客户端形式的,所以不存在此类问题 3、跨域会导致什么问题? 同源策略会限制以下行为: Cookie、LocalStorage和IndexDb的读取 DOM和JS对象的获取 Ajax请求的发送 2、常用的解决方法 这里我们将简单介绍针对跨域问题常用的几种解决办法,并就其中的Cors方法进行配置,若对其它方式感兴趣,可参照老张的哲学的文章, ⅖ 种方法实现完美跨域 2.1、JsonP 1、原理 上面有提到浏览器基于其同源策略会限制部分行为