上一页 1 2 3 4 5 6 7 8 9 10 ··· 85 下一页
摘要: 最近在阅读 .NET Threadpool starvation, and how queuing makes it worse 这篇博文时发现文中代码中的一种 Task 用法之前从未见过,在网上看了一些资料后也是云里雾里不知其解,很是困扰。今天在程序员节的大好日子里终于想通了,于是写下这篇随笔分享给大家 阅读全文
posted @ 2018-10-24 22:19 dudu 阅读(22240) 评论(44) 推荐(67) 编辑
摘要: 接手一台跑在 Tomcat 上的 Java Web 应用的服务器,通过镜像的方式更换服务器后站点无法访问,发现是因为 Tomcat 不能在服务器启动后自动启动,于是基于 init.d 将 Tomcat 配置为以服务方式自动运行。 阅读全文
posted @ 2018-10-21 17:11 dudu 阅读(2481) 评论(0) 推荐(0) 编辑
摘要: SQLite 内存数据库(in-memory database)的连接字符串是 Data Source=:memory: ,它的特点是数据库连接一关闭,数据库就会被删除。而使用 services.AddDbContext 通过连接字符串配置 EF Core 时,EF Core 会在每次查询或 SaveChanges 后立即关闭数据库连接。在这样的情况下,集成测试中就无法在向 SQLite 内存数据库写入数据库后进行查询测试。 阅读全文
posted @ 2018-10-10 14:02 dudu 阅读(1319) 评论(0) 推荐(3) 编辑
摘要: .NET Core 2.0 引入了 IHostedService ,基于它可以很方便地执行后台任务,.NET Core 2.1 则锦上添花地提供了 IHostedService 的默认实现基类 BackgroundService ,在这篇随笔中分别用 Web 与 Console 程序体验一下。 阅读全文
posted @ 2018-09-14 18:08 dudu 阅读(5177) 评论(0) 推荐(6) 编辑
摘要: 在 ASP.NET Core 中如果在 DataProtection 中使用了 PersistKeysToFileSystem 或 PersistKeysToFileSystem,会在日志中出现告警,这是由于 DataProtection 所用到的密钥本身没有被加密存储,要消除这个告警,需要一个专门用来加密“密钥”的密钥,首先用 openssl 命令创建密钥,得到 cnblogs.pfx 文件 阅读全文
posted @ 2018-09-05 16:05 dudu 阅读(8553) 评论(4) 推荐(2) 编辑
摘要: 实际应用场景是将用户上传的文件依次保存到阿里云 OSS 与腾讯云 COS ,实现方式是在启用 Request.EnableRewind() 的情况下通过 Request.Body 读取流,并依次通过 2 个 StreamContent 分别上传到阿里云 OSS 与 腾讯云 COS ,在集成测试中可以正常上传,而部署到服务器上通过浏览器上传却出现了奇怪的问题 阅读全文
posted @ 2018-08-26 17:25 dudu 阅读(3069) 评论(5) 推荐(3) 编辑
摘要: 这两天在一个 ASP.NET Core 项目中遭遇了 AutoMapper ProjectTo 不起作用的奇怪问题,虽然在 ProjectTo 中指定了 DTO ,但 EF Core 生成的 SQL 语句还是 SELECT 了实体类的所有字段(除了在 EF Core 映射配置中忽略的字段),而期望的是至 SELECT DTO 中的字段。 阅读全文
posted @ 2018-08-15 18:00 dudu 阅读(1222) 评论(0) 推荐(1) 编辑
摘要: 我们基于 Razor Class Library 实现了自定义错误页面的公用类库(详见之前的随笔),但是在实际使用时发现如果在 middleware 中发生了异常,则不能显示自定义错误页面,而是返回默认的 500 空白页面。当 middleware 中产生异常时,在去往自定义错误页面的途中,又途径异常 middleware ,从而让自定义错误页面也产生了异常 阅读全文
posted @ 2018-08-06 18:10 dudu 阅读(1239) 评论(3) 推荐(0) 编辑
摘要: 最近在加强持续集成,遇到一个场景需要通过 gitlab-ci 环境变量(Settings -> Settings -> CI/CD -> Variables )在持续集成时向 ASP.NET Core 应用传递配置。ASP.NET Core 默认就启用了从环境变量读取配置,在 WebHost.CreateDefaultBuilder() 中包含了 config.AddEnvironmentVariables() ,只要用正确的格式传递配置,就能搞定。 阅读全文
posted @ 2018-08-05 11:42 dudu 阅读(1390) 评论(0) 推荐(1) 编辑
摘要: 被这个问题困扰很久了,用 dotnet test 命令运行 xUnit.net 测试项目时,测试代码中的 Console.WriteLine() 输出的内容在控制台总是不显示。之前一直以为是 xunit runner 屏蔽了控制台的输出,昨天在博问进行了提问 —— 请问 xUnit 在 .NET Core 中是如何屏蔽控制台输出的,今天在 xUnit 的源代码中苦苦搜寻 阅读全文
posted @ 2018-07-30 18:30 dudu 阅读(2158) 评论(1) 推荐(4) 编辑
摘要: 问题来自博问的一个提问 .net core 多线程数据保存的时候DbContext被释放 。TCPService 通过构造函数注入了 ContentService , ContentService 的实例依赖了 AppDbContext (继承自 EF Core 的 DbContext)。在 TCPService 中通过 Thread.Start 启动了一个新的线程执行了 TCPService 中的 Receive 方法 阅读全文
posted @ 2018-07-23 11:46 dudu 阅读(4576) 评论(4) 推荐(4) 编辑
摘要: 作为 .NET 程序员,痛苦之一是自从 ASP.NET 诞生之日起直到最新的 ASP.NET Core 都无法直接实现跨站登录重定向,只能跳转到当前站点。具体拿 ASP.NET Core 来说就是 CookieAuthenticationOptions.LoginPath 只能指定路径,不能指定包含主机名的完整 url ,ASP.NET Core 会在重定向时自动加上当前请求的主机名。 阅读全文
posted @ 2018-07-19 18:22 dudu 阅读(4135) 评论(0) 推荐(3) 编辑
摘要: 一、阅读材料:All About Span: Exploring a New .NET Mainstay, Span 阅读全文
posted @ 2018-07-02 16:15 dudu 阅读(2727) 评论(1) 推荐(2) 编辑
摘要: WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中带来的新东东,它封装了 TestServer 的使用,让 ASP.NET Core 的集成测试更简便、配置更灵活。 阅读全文
posted @ 2018-06-18 16:47 dudu 阅读(1264) 评论(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 阅读(21707) 评论(18) 推荐(9) 编辑
摘要: ResponseCaching 提供了 VaryByHeader 与 VaryByQueryKeys 这两种种方式配置缓存 Key ,我们在使用 VaryByHeader 时发现一个问题 —— 使用 VaryByHeader 时如果不做限制,会面临缓存被撑爆的风险。比如上面根据 Accept 请求头进行缓存,由于客户端可以任意修改请求头,如果有爬虫发出大量的请求 阅读全文
posted @ 2018-06-14 12:58 dudu 阅读(810) 评论(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 阅读(2329) 评论(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 阅读(1500) 评论(2) 推荐(6) 编辑
摘要: 之前我们为了实现在各个项目中共用自定义错误页面,通过“中间件+字符串拼接页面html”的方式实现了一个公用类库,但实现复杂,页面维护很不方便。Razor Class Library 正好可以解决我们的这个心头之痛,趁着今天 .NET Core 2.1 正式版发布 之热,体验一下这个新特性。 阅读全文
posted @ 2018-05-31 16:26 dudu 阅读(1219) 评论(4) 推荐(2) 编辑
摘要: 日志是程序员的雷达,不仅在生产环境中需要,在集成测试环境中也需要,当持续集成失败后日志可以帮助定位问题。与生产环境不同,在集成测试环境中使用控制台输出日志更方便,这样可以通过持续集成 runner 执行 job 时的输出看到日志 阅读全文
posted @ 2018-05-29 12:10 dudu 阅读(852) 评论(2) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 85 下一页