05 2017 档案
摘要:最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件容易让人产生挫败感,想到 Visual Studio 2017 对 Docker 的支持(Docker Support),也许借助它自动生成Docker配置文件、初步体验一下 Docker 部署是一个入门捷径,遂据此想法尝试了一下,感觉不错。
阅读全文
摘要:这是最近在实际开发中遇到的一个问题,用 asp.net core 开发一个后端 web api ,根据指定的 key 清除 2 台 memcached 服务器上的缓存。背景是我们在进行 .net core 迁移工作,asp.net 项目与 asp.net core 项目并存,为了避免两种类型项目的缓存冲突,我们分别用了 2 台不同的 memcached 服务器。
阅读全文
摘要:自从接触 IOptions 之后,一直纠结这样的问题:自己定义的 Options 要不要实现 IOptions 接口。今天在使用 EnyimMemcachedCore ,需要手动 new MemcachedClientOptions 给 MemcachedClientConfiguration 的构造函数传参时,终于明白了实现 IOptions 的真正用处。
阅读全文
摘要:在将我们的 web api 从 .NET Framework 迁移至 .net core(asp.net core 1.1)之后,遇到一个问题。之前返回值类型为 HttpResponseMessage 的 web api 。原本会返回 json 格式的业务数据,现在返回的却是对 HttpResponseMessage 自己的 json 序列化数据
阅读全文
摘要:这是5月11日遇到的一个问题,1台1核1G阿里云Linux服务器运行着生产环境中的ASP.NET Core站点,出现CPU 100%问题。开始以为是这台服务器负载高引起的,于是将这台服务器从负载均衡上摘下来。这时奇怪的事情发生了,即使没有负载(无用户访问),CPU也在接近100%范围波动。
阅读全文
摘要:C# 7.0的模式匹配(Pattern Mathing)不仅可以节省代码,而且可以让代码更流畅(Fluent),今天又在实际开发中体会了一下。不用模式匹配的代码,需要先获取返回值,然后用if进行判断。使用模式匹配的代码,在if中获取返回值并进行判断,一气呵成。
阅读全文
摘要:西雅图时间5月10日,微软在 Build 2017 大会上发布了 ASP.NET Core 2.0 Preview 1 ( 详见 Announcing ASP.NET 2.0.0-Preview1 and Updates for .NET Web Developers )。以下是我关注的、并且经过自己实际验证的贴心的新特性
阅读全文
摘要:这是一位朋友问我的问题,写篇随笔回答一下。有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions 。 1)先看丑陋的方法 比如在 RedisClient 中需要读取 appsettings.json 中的 redis 连接字符串: 需要在 Red
阅读全文
摘要:这是我们在实际ASP.NET Core项目中用到的,验证用户名中是否包含空格。开始是这么实现的(继承ValidationAttribute,重写IsValid方法)。但发现这样只对服务端验证有效,对前端验证无效。查资料后知道原来还需要实现 IClientModelValidator 接口。这样依然不够,还需要添加真正干活的前端验证js代码。
阅读全文
摘要:今天在重构代码时对下面的一堆if语句实在看着不顺眼。突然想到 C# 7.0 的新特性 —— Pattern Matching in C# 7.0 Case Blocks,眼前一亮。于是试试看能否消灭这一堆if,结果如愿以偿,又一次实际体会到 C# 7.0 的魅力。
阅读全文