K8S集群使用IngressTraefik实现自动颁发Https证书

之前我的集群一直使用的Ingress-Nginx作为应用路由,但是没有证书导致https一直都是不受信,然后被群友安利了Traefik的Ingress实现,感觉不错,抄了一套到我自己的集群上,过程中还踩了点坑,特此记录一下。 本文使用Helm安装Traefik,K8S管理工具使用的Lens,详情见这篇文章。 创建Namespace 为方便管理,创建一个独立的namespace: kubectl c…

1评论

.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评论

Docker内设置本地时区

业务上有个时间要取的时间要和另外项目的CMS后台配置的时间属于同一个时区,而直接用c#取Datetime.Now实际上获取的是+0时区,业务逻辑会出现错误,查了一圈资料大多数都是要增加配置项,更有甚者要我exec到容器内去改时区。。最后终于查到个靠谱的,通过修改DockerFile,在Build的时候就确定容器的时区,命令如下: ENV TZ=Asia/Shanghai RUN ln -snf /…

0评论

C#异步编程捕获异常的正确方式

最近犯了个低级错误,在编写异步方法时,于内部做了throw new Exception()操作,导致上层线程直接死锁。 一般规范来讲,在await方法内部,不要主动抛出异常,这样做会让子线程意外终止,代码无法继续运行。 如果想要捕获一个async方法的异常,可以用如下方式: private async Task<bool> DoSomething() { throw new Exceptio…

0评论

.NetFrameworkMVC项目部署报错节点

今天部署一个新的后台项目,是从老的项目中分离出来的,项目版本是.NetFramework 4.5.1的,因为和新的.NetCore接口共用一套实体类,而.NetStandard不支持.NetFramework4.5.1,无奈之下只好将老项目的版本升级为.NetFramework4.7.2,在构建部署到生产服务器之后出现了问题,报错如下: 网上查了下资料,清一色推荐在服务器上安装4.7.2版本,一开…

0评论

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

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

0评论

NPOI处理Excel的日期类型

今天写业务踩了个小坑,来记录一下。 需求是导入Excel表格到数据库,内容是一个日期的集合,导入时在cell内容转换为C#的Datetime类型时发生异常,查了下解决方法,废话不多说,上代码: for(int rowIndex = 0;rowIndex <= sheet.LastRowNum;rowIndex ++) { var row = sheet.GetRow(rowIndex); i…

0评论

SqlServer使用PIVOT函数进行行转列

今天写业务的时候遇到一个查询,废话不多说,原数据表结构如下: Rule字段实际上是一个枚举的值,最终业务需求是将Rule行转为多列,然后值为原数据表的Value字段 SQL如下: SELECT Point, Platform, [0] as 'Overseas', [100] as 'Conventional', [200] as 'Rigorous' FROM [dbo].[PB_Shieldi…

0评论