Files
qhmes/yy-admin-master/YY.Admin/Infrastructure/Network/DisconnectGuardHandler.cs

27 lines
867 B
C#
Raw Normal View History

using System.Net;
using System.Net.Http;
using YY.Admin.Helper;
namespace YY.Admin.Infrastructure.Network;
/// <summary>
/// 全局断开保护:用户勾选"断开连接"时,直接短路所有后端 HTTP 请求,
/// 返回 499 而不发起真实网络调用,各服务的 catch/IsSuccessStatusCode 分支自行降级。
/// </summary>
internal sealed class DisconnectGuardHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
if (ServerSettingsStore.Load().DisconnectConnection)
{
return Task.FromResult(new HttpResponseMessage((HttpStatusCode)499)
{
ReasonPhrase = "User Disconnected"
});
}
return base.SendAsync(request, cancellationToken);
}
}