随笔分类 - Core WebAPI
.net core WebAPI学习共享
摘要:Dictionary<string, string> fieldMappings,Key:特殊标记 Value:替换的内容{"FieldId15646","字段名"} 例:'字段:{FieldId15646}被替换'-》'字段:【字段名】被替换' 方案一:正则表达式 public static st
阅读全文
摘要:1、方法上注册 当前方法生效 2、控制器注册 当前控制器生效 3、全局注册 全局生效 builder.Services .AddControllers(options => { options.Filters.Add<CustomExceptionFilterAttribute>();//全局注册E
阅读全文
摘要:为什么IResoursceFilter更适合做缓存? IActionFilter:只包裹Action方法 IResoursceFilter:包裹控制器的构造示例+Action方法 IResoursceFilter更适合做缓存,效率更高。因为IResoursceFilter先判断缓存是否存在,再执行构
阅读全文
摘要:注:带有注入的扩展类,在标记时需要用 [TypeFilter(typeof(CustomAsyncActionFilterAttribute))] 或者 [ServiceFilter(typeof(CustomAsyncActionFilterAttribute))](需要在IOC容器中注册) 扩展
阅读全文
摘要:参考:.net core(.net 6) IResourceFilter 的基础使用(IAsyncResourceFilter) 缓存:就是一个临时存储区域,以一个Key-value格式保存数据;key 保存数据的标识,也需要这个表示key才能获取缓存。 a 定义一个静态的键值对Dictionary
阅读全文
摘要:a 定义CustomResourceFilterAttribute扩展类,继承父类Attribute,实现 IResourceFilter接口 b 实现接口方法 c 标记在API action上 1、CustomResourceFilterAttribute扩展类 Attribute类为标记类。 I
阅读全文
摘要:在.net core 中Filter分为以下六大类: 1、AuthorizeAttribute(权限验证) 2、IResourceFilter(资源缓存).net core(.net 6) IResourceFilter 的基础使用(IAsyncResourceFilter) .net core(.
阅读全文
摘要:问题描述:在webapi添加version版本支持后在Swagger页面会自动添加一个版本输入框。 解决方法: 前提:1、隐藏输入框,实现版本支持需要在路由中使用版本{version:apiVersion} 版本支持参考:C# .net core(.net 6) WebApi 版本控制(Versio
阅读全文
摘要:问题描述:在controller中使用了Versioning版本控制,在swagger页面显示时未转化为对应版本。 示例: 转换为: 实现方法: 在注册Swagger时‘builder.Services.AddSwaggerGen’中,添加对‘Swagger文档显示的API地址中将版本信息参数替换为
阅读全文
摘要:1、授权 Authorize 2、资源 Resource 3、异常 Exception 4、方法前后 Action 5、AlwayRunResult 6、结果前后 Result
阅读全文
摘要:.net 6 框架内置了log,但是该log只能在控制台打印日志,在实际项目中我们需要将日志实现持久化,将日志写进文档、写入数据库等,所以选择了log4net。 1、引入NuGet包 Microsoft.Extensions.Logging.Log4Net.AspNetCore log4netSys
阅读全文
摘要:注:FromServices为IOC属性注入,参考:如何在 ASP.NET Core 中使用 FromServices
阅读全文
摘要:1、请求级 Middleware 全局,所有请求都需要控制。如:记录所有请求的IP、鉴权授权。 2、功能级 Filter 某个API。如:敏感API、记录用户信息、退出时数据库记录信息。 3、业务级 AutofacAOP 某个操作。如:在某个跨库写入问题,需要添加分布式事务、某个数据查询添加缓存。参
阅读全文
摘要:注:接口代码、类库代码参考:.net core (.net 6) IOC容器注入--内置容器 Autofac容器优点:灵活(属性注入、多种生命周期、AOP扩展)、比较流行(技术门槛低) 1、引入NuGet包 Autofac Autofac.Extensions.DependencyInjection
阅读全文
摘要:注:内置容器仅支持构造函数方式注入(经过实验[FromServices]注入也支持) 参考:面试疑问:.NET Core依赖注入有三种方式是真的吗? 1、添加类库项目 Demo02.Interface、Demo02.Service 2、创建ITestServiceA接口 namespace Demo
阅读全文
摘要:builder.Services.AddControllers().AddJsonOptions(options => { options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);//支持
阅读全文
摘要:异常:System.IO.FileNotFoundException:“Could not find file 'F:\.net core stuty\Demo02\Demo02\bin\Debug\net6.0\Demo02.xml'.” 解决方法: 详细请见:.net 6 配置使用swagger
阅读全文
摘要:注:.net 6 注册使用Swagger 封装扩展静态类方法 注: C# .net core(.net 6) 注册使用Swagger 封装扩展静态类方法 一、Version版本控制 1、安装两个NuGet包 Microsoft.AspNetCore.Mvc.VersioningMicrosoft.A
阅读全文
摘要:注:Swagger配置参考:.net 6 配置使用swagger C#扩展静态类方法实现参考:https://www.cnblogs.com/spirit-ling/p/14537735.html 1、创建SwaggerExtension.cs 类 项目下创建Utility文件夹(用于存放扩展类)
阅读全文