You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio调试时BackgroundService为何会被取消?

问题根源:调试服务器的闲置超时回收
  • 你遇到的OperationCanceledException确实是Visual Studio调试用的Web服务器(IIS Express或Kestrel调试模式)导致的。这类服务器默认有10分钟的闲置超时规则——当应用连续10分钟没有收到任何HTTP请求时,服务器会自动回收应用进程,释放资源。
  • 进程回收时,ASP.NET Core会触发BackgroundService的停止逻辑,传入的stoppingToken会被置为取消状态。而你的代码里await _queue.PullAsync(stoppingToken)正处于等待Channel消息的阻塞状态,令牌取消会直接抛出这个取消异常。
验证方法
  • 调试时每隔几分钟手动给应用发个HTTP请求,比如访问首页,如果不再抛出异常,就实锤是闲置超时的问题。
  • 查看IIS Express的配置文件(路径一般是%userprofile%\Documents\IISExpress\config\applicationhost.config),找到对应应用池的idleTimeout属性,默认值就是00:10:00,和你遇到的时间点完全匹配。
调试阶段的临时解决办法
  • 修改IIS Express的闲置超时:打开上述配置文件,把目标应用池的idleTimeout改成更大的值(比如01:00:00),或者设为00:00:00直接禁用超时(注意:生产环境别这么干,会浪费资源)。
  • 保持应用活跃:写个简单的脚本,每隔几分钟自动给应用发个请求,避免触发回收机制。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:44:56