.NetCore WebApi通过中间件实现参数的日志打印

线上环境为了防止上下游扯皮,是有必要把接口的输入输出打印到日志中的,这样出了问题能够快速定位问题,没出问题也能直接把日志糊在对面脸上抓紧时间下班。 之前在.Net FrameWork的实现其实挺简单的,就是Global.aspx里的生命周期函数里写上就可以了,但是转到core之后,想当然的使用Filter来实现,遇到了不少问题,比如使用ActionFilter时,触发过滤器的时候,RequestB…

0评论

.NetCore的WebClient简单使用备忘

Http请求是web服务经常使用的东西,.NetCore主流使用的类库是WebClient,但是有时候经常要写一个post请求的时候,提笔忘字,防止以后忘了又得找一遍,这里直接记录一下简单的使用方法。 首先是Get请求,主要需要注意的是Encoding需要设置。 然后就是POST请求,发送一个对象作为body: 这里一定记得要设置ContentType和Encoding,不然接口会报错,因为协议不…

0评论

EasyNetQ异构异项目发布与订阅

最近因为业务架构需要,编写一个支付订单结果通知的服务,但发布方和订阅方不在同一个项目内,虽然两者的框架都是EasyNetQ,但版本差距很大,发布方是3.x,接受方是6.x,在订阅消息时遇到了一些问题,这里记录下解决方案。 首先就是市面上的所有主流消息队列框架封装的都过于完善,在发布消息和订阅消息时,会对消息的Body以外的属性,比如Header做一些额外的操作,以帮助框架完成更高级的功能,但这带来…

0评论

Serilog使用多个Logger实现多文件日志

因为一个统计业务的需求,需要将业务数据和系统日志分为两个文件进行记录,记录之后由日志收集系统收集到不同的ES的索引内,这里记录一下多Logger的配置方式。 首先必不可少的是,先安装Serilog.Expressions这个nuget包,网上查了很多资料鲜有提到需要安装这个包,导致踩了一个很深的坑,原因是更多的程序员喜欢使用代码内配置Serilog,而不是使用appsettings.json进行配…

0评论

K8S实战部署之.NetCore WebApi

.NetCore应用部署至K8S,实际上就四个问题需要解决: 日志等文件的持久化配置appsettings.json服务的健康检查编写项目的yaml和dockerfile 我们一步一步来。 日志等文件的持久化 你的项目可能内含一些程序运行期间生成的文件,比如日志或用户上传的文件等,你肯定不想让其随容器的销毁而丢失,那么就要解决应用在k8s内的文件持久化问题。 这个问题的解决方法非常简单,就是在k8…

0评论

.NetCore构建自己的Nuget项目模板

业务代码敲多了免不了CtrlCV,每次开新项目的时候脚手架搭起来费时费力,经常要翻看老项目复制来复制去,那么有没有可能自己造一个类似自带的WebApi模板那样的脚手架来快速生成项目呢?答案是有的,我们可以通过dotnet创建项目模板,甚至还可以发布到nuget上供身边同事使用。 准备自己的项目模板 既然我们要造个项目脚手架模板,那么这个模板肯定要有个原型,我们需要先准备一个能够编译通过的.NetC…

0评论

VisualStudio2019远程调试Docker容器内应用

因为经常要将服务部署到公司内网测试环境进行测试,一旦出现bug除了查日志就只能让app端进行抓包,非常的麻烦,痛定思痛,研究了一下VS2019的远程调试功能,废话不多说,直接整。 首先你要确定你的代码发布为Debug模式,因为Release会优化IL中间码,导致你附加到进程调试时有时无法命中断点: 然后发布你的代码打包到服务器上构建镜像创建容器后,打开VS2019的附加到进程: 链接类型选择你部署…

0评论

.NetCore使用机密存储防止机密数据被提交到代码仓库

使用github的朋友经常会遇到这么个问题,由于仓库是public的,所以存储在配置文件内的数据库字符串等用户机密密钥会随代码push到代码仓库后被公开,即使你立即发现后删除配置文件,其他用户仍能从你的提交记录中查询到该机密数据,这肯定是我们所不想看到的,因此,微软为.NetCore的Appsettings文件提供了一种开发环境下的机密数据管理方案。 机密管理器工具的工作原理 机密管理器工具隐藏实…

0评论

VS2019附加到进程调试部署在IIS的.NetCore项目

首先先下载ASP.NET Core 模块,这个东西是为了让IIS可以跑.NetCore项目用的,安装完成后重启IIS。 然后打开你的项目,双击项目的.csproj文件,于PropertyGroup节点添加HostingModel,值为OutOfProcess,这里是为了让项目发布时,自动生成的web.config文件里指定为无托管模式。 <PropertyGroup> <Targ…

0评论