Desarrollador .NET: pregunta de entrevista
¿Cómo propagas cancelación en .NET?
Acepta CancellationToken en límites async y pásalo a cada operación de E/S cancelable. Detente pronto sin convertir cancelación en error del servidor y no sustituyas el token de solicitud por CancellationToken.None.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
La cancelación en .NET es cooperativa y fluye a través de parámetros CancellationToken. ASP.NET Core proporciona HttpContext.RequestAborted, que se activa cuando el cliente se desconecta; se pasa a cada llamada asíncrona a base de datos, HTTP y colas para que el trabajo se detenga en lugar de completarse para nadie. Los bucles largos de CPU llaman a ThrowIfCancellationRequested en puntos seguros. Una OperationCanceledException es esperada y debe convertirse en un resultado silencioso tipo 499 en lugar de un 500 registrado. Las fuentes de token enlazadas combinan un token de solicitud con un timeout, y los servicios en segundo plano reciben el token de parada del host.
Ejemplo
Un endpoint de búsqueda pasó cancellationToken del parámetro de la acción a ToListAsync de EF Core y a la llamada HttpClient al servicio de ranking; cuando los usuarios tecleaban rápido y abandonaban solicitudes, la carga de base de datos cayó un tercio porque las consultas abandonadas se cancelaban. El filtro de excepciones traduce OperationCanceledException a una respuesta vacía sin entrada de error en el log.
Errores frecuentes
- Aceptar un CancellationToken y no pasarlo nunca a las llamadas que podrían respetarlo.
- Pasar CancellationToken.None para ocultar un aviso.
- Registrar cada cancelación como error y alertar por desconexiones de clientes.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.