27 lines
867 B
C#
27 lines
867 B
C#
|
|
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);
|
||
|
|
}
|
||
|
|
}
|