【问题标题】:Detecting a disconnection from SSE on ASP.NET Core在 ASP.NET Core 上检测与 SSE 的断开连接
【发布时间】:2016-07-03 02:49:40
【问题描述】:

我想检测与 ASP.NET Core 上的 SSE(服务器发送事件)的断开连接。旧方式Response.IsClientConnected 不起作用。你有解决这个问题的办法吗?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc server-sent-events .net-core


    【解决方案1】:

    我找到了问题的临时解决方案。临时的,因为在尝试发送请求时检测到IsCancellationRequested 并且失败,而不是在用户在发送请求之前断开连接时

    if (HttpContext.RequestAborted.IsCancellationRequested == true)
    {
         break;
    } 
    

    【讨论】:

    • 谢谢!如果您发现“正确”的方法,请发表评论。
    【解决方案2】:

    在 .NET Core 2.0 中:

    此方法创建一个端点,该端点将在 60 秒后返回 null。如果请求在这 60 秒内被取消,该方法将立即返回 null

    [HttpGet]
    public async Task<string> Get()
    {
        Request.HttpContext.RequestAborted.WaitHandle.WaitOne(60000);
        return null;
    }
    

    此方法在请求连接时执行多个工作单元,直到工作完成。

    [HttpGet]
    public async Task<Items[]> Get()
    {
        Item item = null;
        List<Items> items = new List<Items>();
        do
        {
            item = DoRepitiousWork();
            Items.Add(item);
        }
        while (!Request.HttpContext.RequestAborted.IsCancellationRequested && !item.IsLast);
        return items.ToArray();
    }
    

    【讨论】:

      猜你喜欢
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2019-12-07
      • 1970-01-01
      相关资源
      最近更新 更多