摘要: 这两天在一个 ASP.NET Core 项目中遭遇了 AutoMapper ProjectTo 不起作用的奇怪问题,虽然在 ProjectTo 中指定了 DTO ,但 EF Core 生成的 SQL 语句还是 SELECT 了实体类的所有字段(除了在 EF Core 映射配置中忽略的字段),而期望的是至 SELECT DTO 中的字段。阅读全文
posted @ 2018-08-15 18:00 dudu 阅读(18) 评论(0) 编辑
摘要: 我们基于 Razor Class Library 实现了自定义错误页面的公用类库(详见之前的随笔),但是在实际使用时发现如果在 middleware 中发生了异常,则不能显示自定义错误页面,而是返回默认的 500 空白页面。当 middleware 中产生异常时,在去往自定义错误页面的途中,又途径异常 middleware ,从而让自定义错误页面也产生了异常阅读全文
posted @ 2018-08-06 18:10 dudu 阅读(45) 评论(3) 编辑
摘要: 最近在加强持续集成,遇到一个场景需要通过 gitlab-ci 环境变量(Settings -> Settings -> CI/CD -> Variables )在持续集成时向 ASP.NET Core 应用传递配置。ASP.NET Core 默认就启用了从环境变量读取配置,在 WebHost.CreateDefaultBuilder() 中包含了 config.AddEnvironmentVariables() ,只要用正确的格式传递配置,就能搞定。阅读全文
posted @ 2018-08-05 11:42 dudu 阅读(23) 评论(0) 编辑
摘要: 被这个问题困扰很久了,用 dotnet test 命令运行 xUnit.net 测试项目时,测试代码中的 Console.WriteLine() 输出的内容在控制台总是不显示。之前一直以为是 xunit runner 屏蔽了控制台的输出,昨天在博问进行了提问 —— 请问 xUnit 在 .NET Core 中是如何屏蔽控制台输出的,今天在 xUnit 的源代码中苦苦搜寻阅读全文
posted @ 2018-07-30 18:30 dudu 阅读(82) 评论(0) 编辑
摘要: 问题来自博问的一个提问 .net core 多线程数据保存的时候DbContext被释放 。TCPService 通过构造函数注入了 ContentService , ContentService 的实例依赖了 AppDbContext (继承自 EF Core 的 DbContext)。在 TCPService 中通过 Thread.Start 启动了一个新的线程执行了 TCPService 中的 Receive 方法阅读全文
posted @ 2018-07-23 11:46 dudu 阅读(134) 评论(4) 编辑
摘要: 作为 .NET 程序员,痛苦之一是自从 ASP.NET 诞生之日起直到最新的 ASP.NET Core 都无法直接实现跨站登录重定向,只能跳转到当前站点。具体拿 ASP.NET Core 来说就是 CookieAuthenticationOptions.LoginPath 只能指定路径,不能指定包含主机名的完整 url ,ASP.NET Core 会在重定向时自动加上当前请求的主机名。阅读全文
posted @ 2018-07-19 18:22 dudu 阅读(134) 评论(0) 编辑
摘要: 一、阅读材料:All About Span: Exploring a New .NET Mainstay, Span阅读全文
posted @ 2018-07-02 16:15 dudu 阅读(212) 评论(1) 编辑
摘要: WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中带来的新东东,它封装了 TestServer 的使用,让 ASP.NET Core 的集成测试更简便、配置更灵活。阅读全文
posted @ 2018-06-18 16:47 dudu 阅读(154) 评论(0) 编辑
摘要: ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream —— 不允许 Request.Body.Position=0 ,这就意味着只能读取一次,要想多次读取,需要借助 MemoryStream ,详见博问 asp.net core中2次读取Request.Body的问题阅读全文
posted @ 2018-06-16 16:51 dudu 阅读(546) 评论(3) 编辑
摘要: ResponseCaching 提供了 VaryByHeader 与 VaryByQueryKeys 这两种种方式配置缓存 Key ,我们在使用 VaryByHeader 时发现一个问题 —— 使用 VaryByHeader 时如果不做限制,会面临缓存被撑爆的风险。比如上面根据 Accept 请求头进行缓存,由于客户端可以任意修改请求头,如果有爬虫发出大量的请求阅读全文
posted @ 2018-06-14 12:58 dudu 阅读(75) 评论(1) 编辑
摘要: 在 .NET Core 2.1 中,System.Net.Sockets 的性能有了很大的提升,最好的证明是 Kestrel 与 HttpClient 都改为使用 System.Net.Sockets ,stackoverflow 上也有人提到了,详见 libuv vs sockets in asp.net core 2.1 。这两天阅读了 corefx 中 HttpClient 的 SocketsHttpHandler 部分实现代码,学习了一下它是如何在异步方法中连接 Socket 的阅读全文
posted @ 2018-06-10 14:31 dudu 阅读(247) 评论(3) 编辑
摘要: 在 HttpClientFactory 出生之前,由于 HttpClient 臭名昭著的“dispose之后4分钟tcp连接才会被关闭”问题(详情),只能使用单例或静态的 HttpClient ,但这会带来一个副作用,如果 dns 解析更新了,HttpClient 不会自动更新IP地址。随着 .NET Core 2.1 的发布,HttpClientFactory 横空出世,有效解决了 HttpClient 的生命周期与 TCP 连接管理的问题。阅读全文
posted @ 2018-06-03 20:48 dudu 阅读(490) 评论(2) 编辑
摘要: 之前我们为了实现在各个项目中共用自定义错误页面,通过“中间件+字符串拼接页面html”的方式实现了一个公用类库,但实现复杂,页面维护很不方便。Razor Class Library 正好可以解决我们的这个心头之痛,趁着今天 .NET Core 2.1 正式版发布 之热,体验一下这个新特性。阅读全文
posted @ 2018-05-31 16:26 dudu 阅读(197) 评论(2) 编辑
摘要: 日志是程序员的雷达,不仅在生产环境中需要,在集成测试环境中也需要,当持续集成失败后日志可以帮助定位问题。与生产环境不同,在集成测试环境中使用控制台输出日志更方便,这样可以通过持续集成 runner 执行 job 时的输出看到日志阅读全文
posted @ 2018-05-29 12:10 dudu 阅读(112) 评论(0) 编辑
摘要: 今天在一个 asp.net core 项目中遇到了 nuget 包版本冲突的问题。版本冲突就是由于两个地方引用的 Microsoft.AspNet.WebApi.Client 版本不一致。但 .net core 中根本没有 assembly binding redirect 机制,那怎么办?非常好办,只要认真看了错误提示信息阅读全文
posted @ 2018-05-27 22:46 dudu 阅读(680) 评论(1) 编辑
摘要: 之前在 ASP.NET Core 2.0 中可以正常运行的代码,升级到 ASP.NET Core 2.1 之后出现错误:"System.InvalidOperationException: No service for type 'Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor' has been registered",查看 ViewResultExecutor 的定义发现 ViewResultExecutor 实现了 IActionResultExecutor阅读全文
posted @ 2018-05-19 16:52 dudu 阅读(200) 评论(0) 编辑
摘要: 今天微软发布了 .NET Core 2.1 RC 1 ,虽然只是 Release Candidate 版,但已经可以在生产环境中使用。"NET Core 2.1 RC is supported by Microsoft and can be used in production." .NET Core 2.1 的性能大提升早让人垂涎三尺,看到这个消息后,忍不住今天就进行了升级。主要升级步骤如下:。。。阅读全文
posted @ 2018-05-08 21:29 dudu 阅读(1446) 评论(12) 编辑
摘要: 开始想通过 aliyuncli 的 golang 源码进行编译安装(注:python 版的 aliyuncli 已不再维护),但没成功,详见 通过 golang 源码编译阿里云命令行工具 aliyuncli 出错 ,后来改为直接下载编译好的 aliyuncli ,使用前通过 aliyun configure 命令配置 access key阅读全文
posted @ 2018-04-22 17:55 dudu 阅读(174) 评论(0) 编辑
摘要: 迷人的 ASP.NET Core 有一个美中不足之处,自从一开始接触它到现在,我就一直不喜欢,一直想找到替代品,甚至想过自己实现一个,它就是 BundlerMinifier 。昨天面对 bundleconfig.json 中的一堆配置,又带着侥幸的心理试着在网上搜了搜看有没有替代品,突然发现了 LigerShark.WebOptimizer.Core阅读全文
posted @ 2018-04-19 14:59 dudu 阅读(286) 评论(2) 编辑
摘要: 关于 docker swarm mode 的基本架构,关于 overlay network ,关于服务发现与负载均衡与(Service Discovery and Load Balancing),关于 Rolling Updates ,How does it work? Docker! Part 1: Swarm general architecture阅读全文
posted @ 2018-04-07 20:57 dudu 阅读(183) 评论(1) 编辑