06 2018 档案

摘要:WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中带来的新东东,它封装了 TestServer 的使用,让 ASP.NET Core 的集成测试更简便、配置更灵活。 阅读全文
posted @ 2018-06-18 16:47 dudu 阅读(1225) 评论(1) 推荐(2) 编辑
摘要: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 阅读(21527) 评论(18) 推荐(9) 编辑
摘要:ResponseCaching 提供了 VaryByHeader 与 VaryByQueryKeys 这两种种方式配置缓存 Key ,我们在使用 VaryByHeader 时发现一个问题 —— 使用 VaryByHeader 时如果不做限制,会面临缓存被撑爆的风险。比如上面根据 Accept 请求头进行缓存,由于客户端可以任意修改请求头,如果有爬虫发出大量的请求 阅读全文
posted @ 2018-06-14 12:58 dudu 阅读(800) 评论(4) 推荐(0) 编辑
摘要:在 .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 阅读(2287) 评论(4) 推荐(4) 编辑
摘要:在 HttpClientFactory 出生之前,由于 HttpClient 臭名昭著的“dispose之后4分钟tcp连接才会被关闭”问题(详情),只能使用单例或静态的 HttpClient ,但这会带来一个副作用,如果 dns 解析更新了,HttpClient 不会自动更新IP地址。随着 .NET Core 2.1 的发布,HttpClientFactory 横空出世,有效解决了 HttpClient 的生命周期与 TCP 连接管理的问题。 阅读全文
posted @ 2018-06-03 20:48 dudu 阅读(1497) 评论(2) 推荐(6) 编辑