/
aprogrammer
/
reverse-proxy-ms-yarp
Обзор
Документация
Войти
/
aprogrammer
/
reverse-proxy-ms-yarp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/ReverseProxy/Configuration/ClusterValidators/ProxyHttpRequestValidator.cs
48 строк
2 KB
Lars Johansen
Refactor ConfigValidator (#2293)
23 ноя 2023, 01:16
Не верифицирован
23 ноя 2023, 01:16
4e32b6b
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Net; using System.Threading.Tasks; using Microsoft.Extensions.Logging; namespace Yarp.ReverseProxy.Configuration.ClusterValidators; internal sealed class ProxyHttpRequestValidator(ILogger<ConfigValidator> logger) : IClusterValidator { public ValueTask ValidateAsync(ClusterConfig cluster, IList<Exception> errors) { if (cluster.HttpRequest is null) { // Proxy http request options are not set. return ValueTask.CompletedTask; } if (cluster.HttpRequest.Version is not null && cluster.HttpRequest.Version != HttpVersion.Version10 && cluster.HttpRequest.Version != HttpVersion.Version11 && cluster.HttpRequest.Version != HttpVersion.Version20 && cluster.HttpRequest.Version != HttpVersion.Version30) { errors.Add(new ArgumentException($"Outgoing request version '{cluster.HttpRequest.Version}' is not any of supported HTTP versions (1.0, 1.1, 2 and 3).")); } if (cluster.HttpRequest.Version == HttpVersion.Version10) { Log.Http10Version(logger); } return ValueTask.CompletedTask; } private static class Log { private static readonly Action<ILogger, Exception?> _http10RequestVersionDetected = LoggerMessage.Define( LogLevel.Warning, EventIds.Http10RequestVersionDetected, "The HttpRequest version is set to 1.0 which can result in poor performance and port exhaustion. Use 1.1, 2, or 3 instead."); public static void Http10Version(ILogger logger) { _http10RequestVersionDetected(logger, null); } } }