You need to enable JavaScript to run this app. Asp.Net Core SignalR实现中无法访问已释放AdminContext实例问题排查
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Core SignalR实现中无法访问已释放AdminContext实例问题排查

集成SignalR实现Angular端实时数据推送时出现AdminContext上下文已释放报错

正在尝试集成SignalR,为Angular前端应用提供实时数据推送能力。已检索谷歌平台上所有可查询到的同类问题解决方案,仍未解决当前开发问题,具体报错信息如下:

无法访问已释放的上下文实例。造成该错误的常见原因是:从依赖注入容器解析得到的上下文实例被释放后,仍在应用的其他位置尝试复用同一上下文实例。该问题通常发生在对上下文实例手动调用Dispose方法,或是将上下文包裹在using语句中使用的场景。若使用依赖注入模式,应当交由DI容器负责上下文实例的全生命周期释放逻辑。本次报错涉及的对象为AdminContext。

各层相关实现代码

  • 控制器层代码
[Route("api/[controller]")]
[ApiController]
public class ChartController : ControllerBase
{
    private IHubContext<ChartHub> _hub;
    private readonly ILiveMonitoringService _service;

    public ChartController(IHubContext<ChartHub> hub, ILiveMonitoringService service)
    {
        _hub = hub;
        _service = service;
    }

    public IActionResult Get()
    {
        var timerManager = new TimerManager(async () => await _hub.Clients.All.SendAsync("transferchartdata", await _service.GetAllAsync()));
        return Ok(new { Message = "Request Completed" });
    }
}
  • 服务层代码
public Task<List<LiveMonitoring>> GetAllAsync()
{
    return _repository.GetAll().Take(100).ToListAsync();
}
  • 仓储层代码
public IQueryable<TEntity> GetAll()
{
    try
    {
        return _adminContext.Set<TEntity>();
    }
    catch (Exception ex)
    {
        throw new Exception("Couldn't retrieve entities");
    }
}

请协助定位上述场景下问题的根本成因。


内容的提问来源于stack exchange,提问作者Gerald Hughes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 19:24:03