随笔分类 - ASP.NET Core
摘要:Only the invariant culture is supported in globalization-invariant mode. See https://aka.ms/GlobalizationInvariantMode for more information. (Paramete
阅读全文
摘要:在使用EFCore生成数据库的时候,报上面的错误! 解决方法: 加(Encrypt=True;TrustServerCertificate=True;)即可: "ConnectionStrings": { "DefaultConnection": "Data Source=LAPTOP;Initia
阅读全文
摘要:RESTful约束,如果在一个控制器里面有多个Get、Post...的操作1、在一个控制器里面可以定义多个API方法2、通过路由规则来区分 /// <summary>/// 获取用户信息/// </summary>/// <param name="user"></param>/// <returns
阅读全文
摘要:1、新建RouteConventio.cs文件 /// <summary> /// 全局路由前缀配置 /// </summary> public class RouteConventio:IApplicationModelConvention { /// <summary> /// 定义一个路由前缀
阅读全文
摘要:1、在程序里面建立一个ApiVersions.cs文件,用来设置版本 public enum ApiVersions { /// <summary> /// 版本一 /// </summary> V1, /// <summary> /// 版本二 /// </summary> V2, /// <su
阅读全文
摘要:1、贫血模型一个类中只有属性或者成员变量,没有方法2、充血模型一个类中既有属性、成员变量,也有方法
阅读全文
摘要:JWT(Json Web Token)1、JWT把登录信息(也称作令牌)保存在客户端,而非服务器端,天然适合分布式系统2、为了防止客户端的数据造假,保存在客户端的令牌经过了签名处理,而签名的密钥只有服务器端才知道,每次服务器端收到客户端提交过来的令牌的时候都要检查一下签名3、签名保证了客户端无法数据
阅读全文
摘要:标识(Identity)框架1、标识(Identity)框架:采用基于角色的访问控制(Role-Based Access Control,简称RBAC)策略,内置了对用户、角色等表的管理以及相应的接口,支持外部登录、2FA等2、表示框架使用EF Core对数据库进行操作,因此标识框架支持几乎所有数据
阅读全文
摘要:中间件是ASP.NETCore的核心组件,MVC框架、相应缓存、身份验证、CORS、Swagger等都是内置中间件 中间件的三个概念Map、Use和Run。Map用来定义一个管道可以处理哪些请求Use和Run用来定义管道,一个管道由若干个Use和一个Run组成,每个Use引入一个中间件,而Run是用
阅读全文
摘要:什么是FILTER1、切面编程机制,在ASP.NETCore特定的位置执行我们自定义的代码2、ASP.NETCore中的Filter的五种类型:Authorization filter、Resource filter、Action filter、Exception filter、Result fil
阅读全文
摘要:分布式缓存服务器1、常用的分布式缓存服务器有Redis、Memcached等2、.NET Core中提供了统一的分布式缓存服务器的操作接口IDistributedCache,用法和内存缓存类似3、分布式缓存和内存缓存的区别:缓存值的类型为byte[],需要我们进行类型转换,也提供了一些按照strin
阅读全文
摘要:内存缓存1、把缓存数据放到应用程序的内存。内存缓存中保存的是一系列的键值对,就像Dictionary类型一样 2、内存缓存的数据保存在当前运行的网站程序的内存中,是和进程相关的。因为在Web服务器中,多个不同网站时运行在不同的进程中的,因此不同网站的内存缓存是不会互相干扰的,而且网站重启后,内存缓存
阅读全文
摘要:对于方法都是线程安全的类型,一般使用单例。对于对象依赖了处理上下文,或者使用了有限资源(如数据库连接),一般使用Scoped或者Transient。Scoped、Transient的区别是你在同一个上下文中是否期望使用同一个实例,如果是,用Scoped,反之则使用Transient
阅读全文
摘要:捕捉URL占位符1、在[HttpGet]、[HttpPost]等中使用占位符,比如{schoolName},捕捉路径中的内容,从而公Action方法的参数使用/Students/GetAll/school/MIT/class/A001[HttpGet("school/{schoolName}/cla
阅读全文
摘要:1、Action方法既可以同步也可以异步2、异步Action方法的名字一般不需要一Async结尾3、Web API中Action方法的返回值如果是普通数据类型,那么返回值就会默认被序列化为Json格式4、Web API中的Action方法的返回值同样支持IActionResult乐心,不包含类型信息
阅读全文
摘要:1、控制器上[Route("[controller]/[action]")]2、强制要求控制器中不同的操作用不同的方法名3、把[HttpGet]、[HttpPost]、[HttpDelete]、[HttpPut]等添加到对应的操作方法上注意:如果控制器中存在一个没有添加[HttpGet]、[Http
阅读全文
摘要:HTTP传递参数的三种方式1、URL:适合定位;长度有限2、QueryString:灵活;长度有限3、请求报文体:灵活;长度不限制;不支持GET、DELETE URL:资源定位QueryString:URL之外的额外数据请求报文体:供PUT、POST提供数据
阅读全文
摘要:REST:按照HTTP的语义来使用HTTP协议1、URL用于资源的定位:/user/888、/user/888/orders2、HTTP谓词:GET、POST(新增)、PUT(整体更新)、DELETE、PATCH(局部更新)等3、什么是"幂等",举例?DELETE、PUT、GET是幂等的,POST不
阅读全文
摘要:分页的实现1、Skip(3).Take(8)最好显示指定排序规则(Skip跳过几条数据,Take获取几条数据)2、需要知道满足条件的数据的总条数:用IQueryable的复用LongCount和Count3、页数:long pageCount = (long)Math.Ceiling(count *
阅读全文
摘要:为什么需要外键属性1、EF Core会在数据表中建外键列2、如果需要获取外键列的值,就需要做关联查询,效率低3、需要一种不需要Join直接获取外键列的值的方式 设置外键属性1、在实体类中显示声明一个外键属性2、关系配置中通过HasForeignKey(c=>c.XXX)指定这个属性为外键3、除非必要
阅读全文