06 2018 档案
摘要:WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中带来的新东东,它封装了 TestServer 的使用,让 ASP.NET Core 的集成测试更简便、配置更灵活。
阅读全文
摘要:ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream —— 不允许 Request.Body.Position=0 ,这就意味着只能读取一次,要想多次读取,需要借助 MemoryStream ,详见博问 asp.net core中2次读取Request.Body的问题
阅读全文
摘要:ResponseCaching 提供了 VaryByHeader 与 VaryByQueryKeys 这两种种方式配置缓存 Key ,我们在使用 VaryByHeader 时发现一个问题 —— 使用 VaryByHeader 时如果不做限制,会面临缓存被撑爆的风险。比如上面根据 Accept 请求头进行缓存,由于客户端可以任意修改请求头,如果有爬虫发出大量的请求
阅读全文
摘要:在 .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 的
阅读全文
摘要:在 HttpClientFactory 出生之前,由于 HttpClient 臭名昭著的“dispose之后4分钟tcp连接才会被关闭”问题(详情),只能使用单例或静态的 HttpClient ,但这会带来一个副作用,如果 dns 解析更新了,HttpClient 不会自动更新IP地址。随着 .NET Core 2.1 的发布,HttpClientFactory 横空出世,有效解决了 HttpClient 的生命周期与 TCP 连接管理的问题。
阅读全文