我想检测ASP.NET Core上与SSE(服务器发送事件)的断开连接。旧路Response.IsClientConnected
无效。你有解决这个问题的方法吗?
答案 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();
}