检测ASP.NET Core上的SSE断开连接

时间:2016-07-03 02:49:40

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

在.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();
}