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

WebSocket实例存在未完成SendAsync调用报错,如何排查解决?

排查与解决WebSocket SendAsync冲突问题

报错原因分析

这个报错是因为代码中同步阻塞了异步任务,导致NetworkManager内部的WebSocket通信逻辑出现并发的SendAsync调用,违反了同一时间只能存在一个未完成SendAsync操作的规则。

代码问题定位

你用monitoring.Wait()同步等待监控任务启动,这会阻塞主线程,打乱NetworkManager内部的异步执行流程,进而引发WebSocket操作的冲突。

修复方案

把同步阻塞的Wait()替换成异步的await,让异步流程正常执行:

static async Task Main(string[] args)
{
    const string Url = @"https://www.instagram.com/stories/afra.saracoglu1fan/3050333333186891216/";
    var driver = new ChromeDriver();
    NetworkManager manager = new NetworkManager(driver);
    manager.NetworkResponseReceived += ResponseHandler;

    // 用await替代Wait(),避免同步阻塞异步流程
    await manager.StartMonitoring();

    driver.Navigate().GoToUrl(Url);

    // 实际应用中可添加等待逻辑,比如等待页面加载完成或用户操作
    // 示例:等待10秒后停止监控并清理资源
    await Task.Delay(10000);
    await manager.StopMonitoring();
    driver.Quit();
 
    void ResponseHandler(object sender, NetworkResponseReceivedEventArgs e)
    {
        Console.WriteLine($"Http status: {e.ResponseStatusCode}  | Url: {e.ResponseUrl} ");
    }
}

额外注意事项

  • 始终用await等待异步任务,不要用Wait()或Result,避免阻塞线程导致异步上下文混乱。
  • 程序结束前调用StopMonitoring()和driver.Quit(),释放WebSocket和浏览器资源,防止残留未完成操作或资源泄漏。

内容的提问来源于stack exchange,提问作者Ali K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:07:17