.Net Core
2Ker
这个作者很懒,什么都没留下…
展开
-
CentOS7之部署.Net Core
CentOS7之部署.Net Core.Net Core是跨平台的,这里记录centos7下安装.net core 3.1,详细教程官网已经给出安装sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpmsudo yum updatesudo yum install dotnet-sdk-3.1验证 dotnet --version部署服务服务文件原创 2021-01-18 07:12:13 · 248 阅读 · 0 评论 -
.Net Core之OData
.Net Core之ODataOData可以说是轻量级的GraphQL,但又和GraphQL不同,配合Linq和EFCore,可以极大简化接口,提高开发效率。但全套OData过重,坑也不少,所以我在项目里只使用了其Get部分的功能,同时重写了部分功能,配合EFCore实现高效开发引入services.AddOData();services.AddODataQueryFilter();启用public static class ODataExtension{ public原创 2021-01-17 09:07:50 · 744 阅读 · 0 评论 -
.Net Core之SignalR
.Net Core之SignalRSignalR作为实时通讯框架,支持轮询和WebSocket,会自动选择服务器和客户端的最佳传输方式,很适合需要实时通讯的需求引入services.AddSignalR();app.UseEndpoints(endpoints =>{ endpoints.MapControllers(); endpoints.MapHub<SignalRHub>("/signalRHub");});定义SignalR的Hu原创 2021-01-17 08:28:35 · 1040 阅读 · 0 评论 -
.Net Core之后台任务
.Net Core之后台任务.Net Core自带的后台任务可以满足基础需求,而更高级的用法则需要自己实现或使用第三方库,比如Hangfire自带后台任务(IHostedService)一次性,周期性,任务队列都可以通过IHostedService快速实现,微软官方文档已经做了很详细的说明,我这里就放出一个周期任务的例子 /// <summary> /// 定时任务 /// </summary> public class TimedHos原创 2021-01-17 08:09:54 · 1139 阅读 · 0 评论 -
.Net Core之发送邮件
.Net Core之发送邮件发送邮件是一个通用功能,这里我们使用MailKit配合Polly做重试封装EmailSenderIEmailSenderpublic interface IEmailSender{ Task SendEmailAsync(string to, string subject, string message, TextFormat textFormat = TextFormat.Plain); Task SendEmailAsync(List<原创 2021-01-17 08:08:02 · 1793 阅读 · 0 评论 -
.Net Core之动态多国语言
.Net Core之动态多国语言不只是.Net Core,几乎是所有平台的多国语言都是写死的,但有的时候需要动的多国语言该怎么办呢?这里提供一种方案:.Net Core + EF Core (也就是数据库资源).Net Core默认的StringLocalizer只支持Resource文件,语言种类是固定的,内容也无法在运行时更改,我们现在的方案是支持数据库,也可以在运行时实时修改内容...原创 2019-03-16 14:37:20 · 1381 阅读 · 0 评论 -
.Net Core之Excel(docker)
.Net Core之Excel(docker).Net Core 3.0还没有正式发布,目前对UI这一块的支持还不是很完善,但很多也能够支持了,比如说Excel和PDF,我们这里主要利用EPPlus调用Excel文件(docker)docker + .Net Core很好用,但是官方docker镜像确实缺少了GUI+的支持,所以在.Net Core下使用EPPlus操作Excel的时候...原创 2019-03-16 14:19:33 · 650 阅读 · 1 评论 -
.Net Core之RabbitMQ
.Net Core之RabbitMQ.Net Core下使用RabbitMQ很方便,不过这里还是采用了EasyNetQ这一二次封装的库EasyNetQ对Rabbit原生接口进行了二次封装,提供了IBus作为入口,入门使用的话更加方便,要想使用,只需要在Startup的时候助于一个Singleton的IBus即可:service.AddSingleton(RabbitHutch.Cre...原创 2019-03-16 14:00:31 · 837 阅读 · 0 评论 -
.Net Core之Swagger
.Net Core之SwaggerWebApi + Swagger是绝配,这里主要使用Swashbuckle和NSwag.Net Core WebApi集成Swagger主要使用Swashbuckle,但是Swashbuckle得页面真的比较卡慢,这时候使用NSwag的页面明显流畅得多:public static class SwaggerExtension{ public...原创 2019-03-16 13:35:06 · 1301 阅读 · 0 评论 -
.Net Core之MongoDB存储文件
.Net Core之MongoDB存储文件MongoDB提供了GridFS来存储文件,我们这里就讨论采用GridFS存储文件的方案这里主要使用MongoDB.Driver相关库MongoDB的一些基本使用:public class MongoFileRepo { private IMongoClient _client; private IM...原创 2019-03-16 09:45:25 · 1265 阅读 · 0 评论 -
.Net Core之JWT认证方案
.Net Core之JWT认证方案.Net Core提供了JWT的认证方案,开箱即用,我们再配合Redis启用黑名单机制,基本可以满足需求基本功能开启JWT认证:public void ConfigureServices(IServiceCollection services){ services.AddAuthentication(JwtBearerDefaults.A...原创 2019-03-16 09:21:36 · 2850 阅读 · 0 评论 -
EF Core之值转换
EF Core之值转换有的时候存在数据库里的数据和我们实际应用的是不一样的,以前只能在model里添加一个特殊的字段来手动转化,其实EF Core提供了一种更优雅解决方案—值转换值转换的应用非常简单,我们这里以TimeSpan数据为例:如果我们直接存储TimeSpan格式的数据,在SqlServer中是有问题的,这样的情况下,存储的数据只能是24小时以内的,这时候我们就需要存储为...原创 2019-03-16 07:29:44 · 1727 阅读 · 0 评论 -
EF Core之全局删除方案
EF Core之全局删除方案本文主要对EF Core的级联删除和软删除的全局配置作说明EF Core的外键默认是级联删除的,如果不想这样就只能手动配置,这里提供一种全局配置的方式:DBContext的OnModelCreating就是我们要处理的地方:protected override void OnModelCreating(ModelBuilder modelBuilde...原创 2019-03-16 07:16:32 · 3434 阅读 · 0 评论 -
EF Core之SqlException处理
EF Core之SqlException处理外键,唯一约束等对后端检查起到了很多的帮助,但有的时候需要后端直接将报错信息反馈给前端。这个时候直接返回SqlException就不合适了,需要对其进行翻译,返回可读的信息EF Core的SqlException的全局处理还是要在DBContext里进行SaveChanges就是我们要处理的地方,EF Core对应的Exception是...原创 2019-03-15 18:33:40 · 1296 阅读 · 0 评论 -
EF Core之自动历史记录
EF Core之自动历史记录有的场景下需要记录特定表的增删改操作,以便追溯。传统的做法是在增删改的方法里同步做记录,很繁琐。在这里我们可以配合EF Core的DBContext做一个全局管控全局管控自然就要有固定的格式我们可以建一个空接ITrackable口来标明需要追踪的表:public interface ITrackable{}对于需要追踪的表,继承ITrac...原创 2019-03-15 17:53:19 · 1079 阅读 · 0 评论 -
EF Core之DBContext生命周期
EF Core之DBContext生命周期DBContext是EF Core的核心,.Net Core WebApi开发的时候,绝大多数的场景下,我们只需要一个Scoped的DBContext即可,但有的时候Scoped是没法满足需求的绝大多数场景下,只需要在Startup注入一个Scoped的Context即可:services.AddDbContext&amp;lt;DBContext&amp;...原创 2019-03-15 17:13:05 · 5092 阅读 · 0 评论