using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Polly8Study.WebApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class TimeoutController : ControllerBase { private readonly ILogger _logger; public TimeoutController(ILogger logger) { _logger = logger; } /// /// 快速接口 /// /// [HttpGet] public IActionResult Fast() { return Ok("Fast"); } /// /// 慢接口:耗时约2秒 /// /// [HttpGet] public async Task Slow(CancellationToken token) { //使用“异常过滤器”, 全局统一处理 try { await Task.Delay(1000*2, token); return Ok("Slow"); } catch (OperationCanceledException ex) { Console.WriteLine("用户取消操作:" + ex.Message); throw; } catch (Exception ex) { Console.WriteLine(ex.Message); return Problem("服务器异常"); } finally { Console.WriteLine("请求结束"); } } } }