为.Net Core 3.1 WebAPI 新增gRPC支持
这里简单记录下如何为.NetCore3.1的WebAPI项目新增gRPC支持,.Net 5 6 7大体上也差不多是这个思路,应该比3.1要简单一些,就不多赘述了,有需要可以参照本文问问gpt就足以了。 首先nuget引用包 Grpc.AspNetCore ,注意如果是3.1版本需要2.56版本的,2.57开始仅支持.net 6 7 8版本,而.Net Core 2.1是不能使用gRPC的,因为2.…
这里简单记录下如何为.NetCore3.1的WebAPI项目新增gRPC支持,.Net 5 6 7大体上也差不多是这个思路,应该比3.1要简单一些,就不多赘述了,有需要可以参照本文问问gpt就足以了。 首先nuget引用包 Grpc.AspNetCore ,注意如果是3.1版本需要2.56版本的,2.57开始仅支持.net 6 7 8版本,而.Net Core 2.1是不能使用gRPC的,因为2.…
线上环境为了防止上下游扯皮,是有必要把接口的输入输出打印到日志中的,这样出了问题能够快速定位问题,没出问题也能直接把日志糊在对面脸上抓紧时间下班。 之前在.Net FrameWork的实现其实挺简单的,就是Global.aspx里的生命周期函数里写上就可以了,但是转到core之后,想当然的使用Filter来实现,遇到了不少问题,比如使用ActionFilter时,触发过滤器的时候,RequestB…
因为一个统计业务的需求,需要将业务数据和系统日志分为两个文件进行记录,记录之后由日志收集系统收集到不同的ES的索引内,这里记录一下多Logger的配置方式。 首先必不可少的是,先安装Serilog.Expressions这个nuget包,网上查了很多资料鲜有提到需要安装这个包,导致踩了一个很深的坑,原因是更多的程序员喜欢使用代码内配置Serilog,而不是使用appsettings.json进行配…
最近犯了个低级错误,在编写异步方法时,于内部做了throw new Exception()操作,导致上层线程直接死锁。 一般规范来讲,在await方法内部,不要主动抛出异常,这样做会让子线程意外终止,代码无法继续运行。 如果想要捕获一个async方法的异常,可以用如下方式: private async Task<bool> DoSomething() { throw new Exceptio…
首先先下载ASP.NET Core 模块,这个东西是为了让IIS可以跑.NetCore项目用的,安装完成后重启IIS。 然后打开你的项目,双击项目的.csproj文件,于PropertyGroup节点添加HostingModel,值为OutOfProcess,这里是为了让项目发布时,自动生成的web.config文件里指定为无托管模式。 <PropertyGroup> <Targ…
今天写业务踩了个小坑,来记录一下。 需求是导入Excel表格到数据库,内容是一个日期的集合,导入时在cell内容转换为C#的Datetime类型时发生异常,查了下解决方法,废话不多说,上代码: for(int rowIndex = 0;rowIndex <= sheet.LastRowNum;rowIndex ++) { var row = sheet.GetRow(rowIndex); i…