Здравствуйте, rameel, Вы писали:
R>Добавляешь как параметр твоего метода-endpoint'а. Инфраструктура сама прокинет его в твой метод. Этот токен связан с текущим запросом.
R>R>public async Task<IActionResult> Get123(CancellationToken cancellationToken)
R>
Кажется, оно, благодарю:
[HttpGet(Name = "streamer")]
public async Task<IActionResult> Get2(CancellationToken cancellationToken)
{
using (var tcpClient = new TcpClient())
{
await tcpClient.ConnectAsync("localhost", 5555, cancellationToken);
using (var netStream = tcpClient.GetStream())
{
Response.ContentType = "multipart/x-mixed-replace; boundary=abcd";
var ns = netStream;
var tcpCl = tcpClient;
Response.OnCompleted(() =>
{
ns?.Dispose();
tcpCl?.Dispose();
return Task.CompletedTask;
});
await netStream.CopyToAsync(Response.Body,1024*1024, cancellationToken);
}
}
return Ok();
}
Т.е. теперь при закрытии страницы в браузере OnCompleted отрабатывает нормально. Интересно, а без ct и закрытия страницы, поток так и будет куда-то писать данные?
Т.е. я зыкрыл страницу, что стало с Response.Body? Я не пойми куда гоню поток и трачу ресурсы...
Да и еще (дурацкий) вопрос: а почему до
return Ok() я не дохожу в случае отмены (например, закрытия страницы)? Ну типа запись в поток завершилась,
идем дальше.