实例介绍
YARP是一个用于构建快速代理服务器的反向代理工具包,使用了来自ASP.NET和.NET的基础设施。YARP的关键区别在于,它被设计为易于定制和调整,以匹配每个部署场景的特定需求。
我们期望YARP将作为一个库和项目模板发布,这两者一起提供了一个强大、高性能的代理服务器。其管道和模块被设计为您可以根据自己的需求自定义功能。例如,虽然YARP支持配置文件,但我们预计许多用户将希望根据自己的后端配置管理系统来以编程方式管理配置,YARP将提供一个配置API来实现这种在进程中的定制。
【实例截图】
【核心代码】
文件清单
└── reverse-proxy-308318e305756d12b3fac0bb5f43d6331431d65b
├── activate.ps1
├── activate.sh
├── assets
│ └── icon.png
├── azure-pipelines-pr.yml
├── azure-pipelines.yml
├── build.cmd
├── build.sh
├── CODE_OF_CONDUCT.md
├── contributing.md
├── Directory.Build.props
├── Directory.Build.targets
├── docs
│ ├── DailyBuilds.md
│ ├── designs
│ │ ├── config.md
│ │ ├── README.md
│ │ ├── route-extensibility.md
│ │ └── yarp-tunneling.md
│ ├── docfx
│ │ ├── api
│ │ │ └── index.md
│ │ ├── articles
│ │ │ ├── ab-testing.md
│ │ │ ├── authn-authz.md
│ │ │ ├── config-files.md
│ │ │ ├── config-filters.md
│ │ │ ├── config-providers.md
│ │ │ ├── cors.md
│ │ │ ├── destination-resolvers.md
│ │ │ ├── dests-health-checks.md
│ │ │ ├── diagnosing-yarp-issues.md
│ │ │ ├── direct-forwarding.md
│ │ │ ├── distributed-tracing.md
│ │ │ ├── getting-started.md
│ │ │ ├── grpc.md
│ │ │ ├── header-guidelines.md
│ │ │ ├── header-routing.md
│ │ │ ├── http3.md
│ │ │ ├── http-client-config.md
│ │ │ ├── https-tls.md
│ │ │ ├── httpsys-delegation.md
│ │ │ ├── index.md
│ │ │ ├── kubernetes-ingress.md
│ │ │ ├── lets-encrypt.md
│ │ │ ├── load-balancing.md
│ │ │ ├── middleware.md
│ │ │ ├── output-caching.md
│ │ │ ├── packages-refs.md
│ │ │ ├── queryparameter-routing.md
│ │ │ ├── rate-limiting.md
│ │ │ ├── runtimes.md
│ │ │ ├── service-fabric-int.md
│ │ │ ├── session-affinity.md
│ │ │ ├── timeouts.md
│ │ │ ├── toc.yml
│ │ │ ├── transforms.md
│ │ │ └── websockets.md
│ │ ├── docfx.csproj
│ │ ├── docfx.json
│ │ ├── index.md
│ │ ├── README.md
│ │ ├── templates
│ │ │ └── logo_template
│ │ │ └── logo.svg
│ │ └── toc.yml
│ ├── operations
│ │ ├── BackportingToPreview.md
│ │ ├── Branching.md
│ │ ├── DependencyFlow.md
│ │ ├── README.md
│ │ ├── Release.md
│ │ └── StatusReport.md
│ ├── README.md
│ └── roadmap.md
├── eng
│ ├── Build.props
│ ├── common
│ │ ├── build.cmd
│ │ ├── BuildConfiguration
│ │ │ └── build-configuration.json
│ │ ├── build.ps1
│ │ ├── build.sh
│ │ ├── CIBuild.cmd
│ │ ├── cibuild.sh
│ │ ├── cross
│ │ │ ├── armel
│ │ │ │ ├── armel.jessie.patch
│ │ │ │ ├── sources.list.jessie
│ │ │ │ └── tizen
│ │ │ │ └── tizen.patch
│ │ │ ├── armv6
│ │ │ │ └── sources.list.buster
│ │ │ ├── build-android-rootfs.sh
│ │ │ ├── build-rootfs.sh
│ │ │ ├── ppc64le
│ │ │ │ └── sources.list.bionic
│ │ │ ├── riscv64
│ │ │ │ ├── sources.list.sid
│ │ │ │ └── tizen
│ │ │ │ └── tizen.patch
│ │ │ ├── s390x
│ │ │ │ └── sources.list.bionic
│ │ │ ├── tizen-build-rootfs.sh
│ │ │ ├── tizen-fetch.sh
│ │ │ └── toolchain.cmake
│ │ ├── darc-init.ps1
│ │ ├── darc-init.sh
│ │ ├── dotnet-install.cmd
│ │ ├── dotnet-install.ps1
│ │ ├── dotnet-install.sh
│ │ ├── enable-cross-org-publishing.ps1
│ │ ├── generate-locproject.ps1
│ │ ├── generate-sbom-prep.ps1
│ │ ├── generate-sbom-prep.sh
│ │ ├── helixpublish.proj
│ │ ├── init-tools-native.cmd
│ │ ├── init-tools-native.ps1
│ │ ├── init-tools-native.sh
│ │ ├── internal
│ │ │ ├── Directory.Build.props
│ │ │ ├── NuGet.config
│ │ │ └── Tools.csproj
│ │ ├── internal-feed-operations.ps1
│ │ ├── internal-feed-operations.sh
│ │ ├── loc
│ │ │ └── P22DotNetHtmlLocalization.lss
│ │ ├── msbuild.ps1
│ │ ├── msbuild.sh
│ │ ├── native
│ │ │ ├── CommonLibrary.psm1
│ │ │ ├── common-library.sh
│ │ │ ├── init-compiler.sh
│ │ │ ├── init-distro-rid.sh
│ │ │ ├── init-os-and-arch.sh
│ │ │ ├── install-cmake.sh
│ │ │ ├── install-cmake-test.sh
│ │ │ └── install-tool.ps1
│ │ ├── pipeline-logging-functions.ps1
│ │ ├── pipeline-logging-functions.sh
│ │ ├── post-build
│ │ │ ├── add-build-to-channel.ps1
│ │ │ ├── check-channel-consistency.ps1
│ │ │ ├── nuget-validation.ps1
│ │ │ ├── post-build-utils.ps1
│ │ │ ├── publish-using-darc.ps1
│ │ │ ├── redact-logs.ps1
│ │ │ ├── sourcelink-validation.ps1
│ │ │ ├── symbols-validation.ps1
│ │ │ └── trigger-subscriptions.ps1
│ │ ├── PSScriptAnalyzerSettings.psd1
│ │ ├── README.md
│ │ ├── retain-build.ps1
│ │ ├── sdk-task.ps1
│ │ ├── sdl
│ │ │ ├── configure-sdl-tool.ps1
│ │ │ ├── execute-all-sdl-tools.ps1
│ │ │ ├── extract-artifact-archives.ps1
│ │ │ ├── extract-artifact-packages.ps1
│ │ │ ├── init-sdl.ps1
│ │ │ ├── NuGet.config
│ │ │ ├── packages.config
│ │ │ ├── run-sdl.ps1
│ │ │ ├── sdl.ps1
│ │ │ └── trim-assets-version.ps1
│ │ ├── SetupNugetSources.ps1
│ │ ├── SetupNugetSources.sh
│ │ ├── templates
│ │ │ ├── job
│ │ │ │ ├── execute-sdl.yml
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs
│ │ │ │ ├── codeql-build.yml
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ ├── setup-maestro-vars.yml
│ │ │ │ └── trigger-subscription.yml
│ │ │ ├── steps
│ │ │ │ ├── add-build-to-channel.yml
│ │ │ │ ├── build-reason.yml
│ │ │ │ ├── component-governance.yml
│ │ │ │ ├── execute-codeql.yml
│ │ │ │ ├── execute-sdl.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── run-on-unix.yml
│ │ │ │ ├── run-on-windows.yml
│ │ │ │ ├── run-script-ifequalelse.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ ├── telemetry-end.yml
│ │ │ │ └── telemetry-start.yml
│ │ │ └── variables
│ │ │ ├── pool-providers.yml
│ │ │ └── sdl-variables.yml
│ │ ├── templates-official
│ │ │ ├── job
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs
│ │ │ │ ├── codeql-build.yml
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ ├── setup-maestro-vars.yml
│ │ │ │ └── trigger-subscription.yml
│ │ │ ├── steps
│ │ │ │ ├── add-build-to-channel.yml
│ │ │ │ ├── component-governance.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ └── source-build.yml
│ │ │ └── variables
│ │ │ ├── pool-providers.yml
│ │ │ └── sdl-variables.yml
│ │ ├── tools.ps1
│ │ └── tools.sh
│ ├── Generate-StatusReport.ps1
│ ├── PoliCheckExclusions.xml
│ ├── Publishing.props
│ ├── sdl-tsa-vars.config
│ ├── Signing.props
│ ├── Version.Details.xml
│ └── Versions.props
├── global.json
├── LICENSE.txt
├── NuGet.config
├── pack.cmd
├── pack.sh
├── README.md
├── restore.cmd
├── restore.sh
├── reverse-proxy.sln
├── samples
│ ├── BasicYarpSample
│ │ ├── appsettings.json
│ │ ├── BasicYarpSample.csproj
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ └── README.md
│ ├── Directory.Build.props
│ ├── KubernetesIngress.Sample
│ │ ├── backend
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ ├── backend.csproj
│ │ │ ├── backend.yaml
│ │ │ ├── Dockerfile
│ │ │ ├── ingress-sample.yaml
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ └── README.md
│ │ ├── Combined
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ ├── Dockerfile
│ │ │ ├── ingress-controller.yaml
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ ├── README.md
│ │ │ └── Yarp.Kubernetes.IngressController.csproj
│ │ ├── Ingress
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ ├── Dockerfile
│ │ │ ├── ingress.yaml
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ ├── README.md
│ │ │ └── Yarp.Kubernetes.Ingress.csproj
│ │ ├── Monitor
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ ├── Dockerfile
│ │ │ ├── ingress-monitor.yaml
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ ├── README.md
│ │ │ └── Yarp.Kubernetes.Monitor.csproj
│ │ └── README.md
│ ├── Prometheus
│ │ ├── graph_screenshot.png
│ │ ├── HttpLoadApp
│ │ │ ├── HttpLoadApp.csproj
│ │ │ └── Program.cs
│ │ ├── prometheus.yml
│ │ ├── README.md
│ │ ├── ReverseProxy.Metrics-Prometheus.Sample
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ ├── Program.cs
│ │ │ ├── PrometheusDnsMetrics.cs
│ │ │ ├── PrometheusForwarderMetrics.cs
│ │ │ ├── PrometheusKestrelMetrics.cs
│ │ │ ├── PrometheusOutboundHttpMetrics.cs
│ │ │ ├── PrometheusServiceExtensions.cs
│ │ │ ├── PrometheusSocketMetrics.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ └── ReverseProxy.Metrics.Prometheus.Sample.csproj
│ │ ├── run10destinations.cmd
│ │ └── run10destinations.sh
│ ├── README.md
│ ├── ReverseProxy.Auth.Sample
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── AccountController.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── ReverseProxy.Auth.Sample.csproj
│ │ ├── TokenService.cs
│ │ ├── Views
│ │ │ └── Account
│ │ │ ├── AccessDenied.cshtml
│ │ │ ├── LoggedOut.cshtml
│ │ │ └── Login.cshtml
│ │ └── wwwroot
│ │ └── favicon.ico
│ ├── ReverseProxy.Code.Sample
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ └── ReverseProxy.Code.Sample.csproj
│ ├── ReverseProxy.ConfigFilter.Sample
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── CustomConfigFilter.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ └── ReverseProxy.ConfigFilter.Sample.csproj
│ ├── ReverseProxy.Config.Sample
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ └── ReverseProxy.Config.Sample.csproj
│ ├── ReverseProxy.Direct.Sample
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ └── ReverseProxy.Direct.Sample.csproj
│ ├── ReverseProxy.HttpSysDelegation.Sample
│ │ ├── README.md
│ │ ├── ReverseProxy
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ └── ReverseProxy.HttpSysDelegation.Sample.csproj
│ │ └── SampleHttpSysServer
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ └── SampleHttpSysServer.csproj
│ ├── ReverseProxy.LetsEncrypt.Sample
│ │ ├── appsettings.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ └── ReverseProxy.LetsEncrypt.Sample.csproj
│ ├── ReverseProxy.Metrics.Sample
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── ForwarderMetricsConsumer.cs
│ │ ├── ForwarderTelemetryConsumer.cs
│ │ ├── HttpClientTelemetryConsumer.cs
│ │ ├── PerRequestMetrics.cs
│ │ ├── PerRequestYarpMetricCollectionMiddleware.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ ├── ReverseProxy.Metrics.Sample.csproj
│ │ └── WebSocketsTelemetryConsumer.cs
│ ├── ReverseProxy.Transforms.Sample
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── MyTransformFactory.cs
│ │ ├── MyTransformProvider.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── ReverseProxy.Transforms.Sample.csproj
│ │ └── TokenService.cs
│ └── SampleServer
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── Controllers
│ │ ├── HealthController.cs
│ │ ├── HttpController.cs
│ │ └── WebSocketsController.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── README.md
│ ├── SampleServer.csproj
│ └── wwwroot
│ └── index.html
├── SECURITY.md
├── src
│ ├── Directory.Build.props
│ ├── Kubernetes.Controller
│ │ ├── Caching
│ │ │ ├── Endpoints.cs
│ │ │ ├── ICache.cs
│ │ │ ├── IngressCache.cs
│ │ │ ├── IngressClassData.cs
│ │ │ ├── IngressData.cs
│ │ │ ├── NamespaceCache.cs
│ │ │ └── ServiceData.cs
│ │ ├── Certificates
│ │ │ ├── CertificateHelper.cs
│ │ │ ├── ICertificateHelper.cs
│ │ │ ├── IServerCertificateSelector.cs
│ │ │ └── ServerCertificateSelector.cs
│ │ ├── Client
│ │ │ ├── GroupApiVersionKind.cs
│ │ │ ├── IIngressResourceStatusUpdater.cs
│ │ │ ├── IResourceInformer.cs
│ │ │ ├── IResourceInformerRegistration.cs
│ │ │ ├── KubernetesClientOptions.cs
│ │ │ ├── ResourceInformer.cs
│ │ │ ├── ResourceSelector.cs
│ │ │ ├── V1EndpointsResourceInformer.cs
│ │ │ ├── V1IngressClassResourceInformer.cs
│ │ │ ├── V1IngressResourceInformer.cs
│ │ │ ├── V1IngressResourceStatusUpdater.cs
│ │ │ ├── V1SecretResourceInformer.cs
│ │ │ └── V1ServiceResourceInformer.cs
│ │ ├── ConfigProvider
│ │ │ ├── IUpdateConfig.cs
│ │ │ └── KubernetesConfigProvider.cs
│ │ ├── Converters
│ │ │ ├── ClusterTransfer.cs
│ │ │ ├── YarpConfigContext.cs
│ │ │ ├── YarpIngressContext.cs
│ │ │ ├── YarpIngressOptions.cs
│ │ │ └── YarpParser.cs
│ │ ├── Hosting
│ │ │ ├── BackgroundHostedService.cs
│ │ │ ├── HostedServiceAdapter.cs
│ │ │ └── ServiceCollectionHostedServiceAdapterExtensions.cs
│ │ ├── Management
│ │ │ ├── KubernetesCoreExtensions.cs
│ │ │ ├── KubernetesReverseProxyServiceCollectionExtensions.cs
│ │ │ └── KubernetesReverseProxyWebHostBuilderExtensions.cs
│ │ ├── NamespacedName.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Protocol
│ │ │ ├── DispatchActionResult.cs
│ │ │ ├── DispatchConfigProvider.cs
│ │ │ ├── DispatchController.cs
│ │ │ ├── Dispatcher.cs
│ │ │ ├── IDispatcher.cs
│ │ │ ├── IDispatchTarget.cs
│ │ │ ├── MessageConfigProviderExtensions.cs
│ │ │ ├── Message.cs
│ │ │ ├── Receiver.cs
│ │ │ └── ReceiverOptions.cs
│ │ ├── Queues
│ │ │ ├── IWorkQueue.cs
│ │ │ ├── ProcessingRateLimitedQueue.cs
│ │ │ └── WorkQueue.cs
│ │ ├── Rate
│ │ │ ├── Limit.cs
│ │ │ ├── Limiter.cs
│ │ │ └── Reservation.cs
│ │ ├── Services
│ │ │ ├── IngressController.cs
│ │ │ ├── IReconciler.cs
│ │ │ ├── QueueItem.cs
│ │ │ ├── ReconcileData.cs
│ │ │ └── Reconciler.cs
│ │ ├── Yarp.Kubernetes.Controller.csproj
│ │ └── YarpOptions.cs
│ ├── ReverseProxy
│ │ ├── Configuration
│ │ │ ├── ActiveHealthCheckConfig.cs
│ │ │ ├── AuthorizationConstants.cs
│ │ │ ├── ClusterConfig.cs
│ │ │ ├── ClusterValidators
│ │ │ │ ├── DestinationValidator.cs
│ │ │ │ ├── HealthCheckValidator.cs
│ │ │ │ ├── IClusterValidator.cs
│ │ │ │ ├── LoadBalancingValidator.cs
│ │ │ │ ├── ProxyHttpClientValidator.cs
│ │ │ │ ├── ProxyHttpRequestValidator.cs
│ │ │ │ └── SessionAffinityValidator.cs
│ │ │ ├── ConfigProvider
│ │ │ │ ├── ConfigurationConfigProvider.cs
│ │ │ │ ├── ConfigurationReadingExtensions.cs
│ │ │ │ └── ConfigurationSnapshot.cs
│ │ │ ├── ConfigValidator.cs
│ │ │ ├── CorsConstants.cs
│ │ │ ├── DestinationConfig.cs
│ │ │ ├── HeaderMatchMode.cs
│ │ │ ├── HealthCheckConfig.cs
│ │ │ ├── HttpClientConfig.cs
│ │ │ ├── IConfigChangeListener.cs
│ │ │ ├── IConfigValidator.cs
│ │ │ ├── InMemoryConfigProvider.cs
│ │ │ ├── InMemoryConfigProviderExtensions.cs
│ │ │ ├── IProxyConfig.cs
│ │ │ ├── IProxyConfigFilter.cs
│ │ │ ├── IProxyConfigProvider.cs
│ │ │ ├── IYarpOutputCachePolicyProvider.cs
│ │ │ ├── IYarpRateLimiterPolicyProvider.cs
│ │ │ ├── PassiveHealthCheckConfig.cs
│ │ │ ├── QueryParameterMatchMode.cs
│ │ │ ├── RateLimitingConstants.cs
│ │ │ ├── RouteConfig.cs
│ │ │ ├── RouteHeader.cs
│ │ │ ├── RouteMatch.cs
│ │ │ ├── RouteQueryParameter.cs
│ │ │ ├── RouteValidators
│ │ │ │ ├── AuthorizationPolicyValidator.cs
│ │ │ │ ├── CorsPolicyValidator.cs
│ │ │ │ ├── HeadersValidator.cs
│ │ │ │ ├── HostValidator.cs
│ │ │ │ ├── IRouteValidator.cs
│ │ │ │ ├── MethodsValidator.cs
│ │ │ │ ├── OutputCachePolicyValidator.cs
│ │ │ │ ├── PathValidator.cs
│ │ │ │ ├── QueryParametersValidator.cs
│ │ │ │ ├── RateLimitPolicyValidator.cs
│ │ │ │ └── TimeoutPolicyValidator.cs
│ │ │ ├── SessionAffinityConfig.cs
│ │ │ ├── SessionAffinityCookieConfig.cs
│ │ │ ├── TimeoutPolicyConstants.cs
│ │ │ └── WebProxyConfig.cs
│ │ ├── Delegation
│ │ │ ├── AppBuilderDelegationExtensions.cs
│ │ │ ├── DelegationExtensions.cs
│ │ │ ├── HttpSysDelegator.cs
│ │ │ ├── HttpSysDelegatorMiddleware.cs
│ │ │ └── IHttpSysDelegator.cs
│ │ ├── Forwarder
│ │ │ ├── CallbackHttpClientFactory.cs
│ │ │ ├── DirectForwardingHttpClientProvider.cs
│ │ │ ├── EmptyHttpContent.cs
│ │ │ ├── ForwarderError.cs
│ │ │ ├── ForwarderErrorFeature.cs
│ │ │ ├── ForwarderHttpClientContext.cs
│ │ │ ├── ForwarderHttpClientFactory.cs
│ │ │ ├── ForwarderMiddleware.cs
│ │ │ ├── ForwarderRequestConfig.cs
│ │ │ ├── ForwarderStage.cs
│ │ │ ├── ForwarderTelemetry.cs
│ │ │ ├── HttpForwarder.cs
│ │ │ ├── HttpTransformer.cs
│ │ │ ├── IForwarderErrorFeature.cs
│ │ │ ├── IForwarderHttpClientFactory.cs
│ │ │ ├── IHttpForwarder.cs
│ │ │ ├── IHttpForwarderExtensions.cs
│ │ │ ├── ProtocolHelper.cs
│ │ │ ├── RequestTransformer.cs
│ │ │ ├── RequestUtilities.cs
│ │ │ ├── ReverseProxyPropagator.cs
│ │ │ ├── StreamCopier.cs
│ │ │ ├── StreamCopyHttpContent.cs
│ │ │ └── StreamCopyResult.cs
│ │ ├── Health
│ │ │ ├── ActiveHealthCheckMonitor.cs
│ │ │ ├── ActiveHealthCheckMonitor.Log.cs
│ │ │ ├── ActiveHealthCheckMonitorOptions.cs
│ │ │ ├── AppBuilderHealthExtensions.cs
│ │ │ ├── ClusterDestinationsUpdater.cs
│ │ │ ├── ConsecutiveFailuresHealthPolicy.cs
│ │ │ ├── ConsecutiveFailuresHealthPolicyOptions.cs
│ │ │ ├── DefaultProbingRequestFactory.cs
│ │ │ ├── DestinationHealthUpdater.cs
│ │ │ ├── DestinationProbingResult.cs
│ │ │ ├── EntityActionScheduler.cs
│ │ │ ├── HealthCheckConstants.cs
│ │ │ ├── HealthyAndUnknownDestinationsPolicy.cs
│ │ │ ├── HealthyOrPanicDestinationsPolicy.cs
│ │ │ ├── IActiveHealthCheckMonitor.cs
│ │ │ ├── IActiveHealthCheckPolicy.cs
│ │ │ ├── IAvailableDestinationsPolicy.cs
│ │ │ ├── IClusterDestinationsUpdater.cs
│ │ │ ├── IDestinationHealthUpdater.cs
│ │ │ ├── IPassiveHealthCheckPolicy.cs
│ │ │ ├── IProbingRequestFactory.cs
│ │ │ ├── NewActiveDestinationHealth.cs
│ │ │ ├── PassiveHealthCheckMiddleware.cs
│ │ │ ├── TransportFailureRateHealthPolicy.cs
│ │ │ └── TransportFailureRateHealthPolicyOptions.cs
│ │ ├── Limits
│ │ │ └── LimitsMiddleware.cs
│ │ ├── LoadBalancing
│ │ │ ├── AppBuilderLoadBalancingExtensions.cs
│ │ │ ├── FirstLoadBalancingPolicy.cs
│ │ │ ├── ILoadBalancingPolicy.cs
│ │ │ ├── LeastRequestsLoadBalancingPolicy.cs
│ │ │ ├── LoadBalancingMiddleware.cs
│ │ │ ├── LoadBalancingPolicies.cs
│ │ │ ├── PowerOfTwoChoicesLoadBalancingPolicy.cs
│ │ │ ├── RandomLoadBalancingPolicy.cs
│ │ │ └── RoundRobinLoadBalancingPolicy.cs
│ │ ├── Management
│ │ │ ├── IProxyStateLookup.cs
│ │ │ ├── IReverseProxyBuilder.cs
│ │ │ ├── IReverseProxyBuilderExtensions.cs
│ │ │ ├── ProxyConfigManager.cs
│ │ │ ├── ReverseProxyBuilder.cs
│ │ │ └── ReverseProxyServiceCollectionExtensions.cs
│ │ ├── Model
│ │ │ ├── ClusterDestinationsState.cs
│ │ │ ├── ClusterModel.cs
│ │ │ ├── ClusterState.cs
│ │ │ ├── DestinationHealth.cs
│ │ │ ├── DestinationHealthState.cs
│ │ │ ├── DestinationModel.cs
│ │ │ ├── DestinationState.cs
│ │ │ ├── HttpContextFeaturesExtensions.cs
│ │ │ ├── IClusterChangeListener.cs
│ │ │ ├── IReverseProxyApplicationBuilder.cs
│ │ │ ├── IReverseProxyFeature.cs
│ │ │ ├── ProxyPipelineInitializerMiddleware.cs
│ │ │ ├── README.md
│ │ │ ├── ReverseProxyApplicationBuilder.cs
│ │ │ ├── ReverseProxyFeature.cs
│ │ │ ├── RouteModel.cs
│ │ │ └── RouteState.cs
│ │ ├── README.md
│ │ ├── Routing
│ │ │ ├── DirectForwardingIEndpointRouteBuilderExtensions.cs
│ │ │ ├── HeaderMatcher.cs
│ │ │ ├── HeaderMatcherPolicy.cs
│ │ │ ├── HeaderMetadata.cs
│ │ │ ├── IHeaderMetadata.cs
│ │ │ ├── IQueryParameterMetadata.cs
│ │ │ ├── ProxyEndpointFactory.cs
│ │ │ ├── QueryParameterMatcher.cs
│ │ │ ├── QueryParameterMatcherPolicy.cs
│ │ │ ├── QueryParameterMetadata.cs
│ │ │ ├── ReverseProxyConventionBuilder.cs
│ │ │ └── ReverseProxyIEndpointRouteBuilderExtensions.cs
│ │ ├── ServiceDiscovery
│ │ │ ├── DnsDestinationResolver.cs
│ │ │ ├── DnsDestinationResolverOptions.cs
│ │ │ ├── IDestinationResolver.cs
│ │ │ ├── NoOpDestinationResolver.cs
│ │ │ └── ResolvedDestinationCollection.cs
│ │ ├── SessionAffinity
│ │ │ ├── AffinitizeTransform.cs
│ │ │ ├── AffinitizeTransformProvider.cs
│ │ │ ├── AffinityHelpers.cs
│ │ │ ├── AffinityResult.cs
│ │ │ ├── AffinityStatus.cs
│ │ │ ├── AppBuilderSessionAffinityExtensions.cs
│ │ │ ├── ArrCookieSessionAffinityPolicy.cs
│ │ │ ├── BaseEncryptedSessionAffinityPolicy.cs
│ │ │ ├── BaseHashCookieSessionAffinityPolicy.cs
│ │ │ ├── CookieSessionAffinityPolicy.cs
│ │ │ ├── CustomHeaderSessionAffinityPolicy.cs
│ │ │ ├── HashCookieSessionAffinityPolicy.cs
│ │ │ ├── IAffinityFailurePolicy.cs
│ │ │ ├── ISessionAffinityPolicy.cs
│ │ │ ├── Log.cs
│ │ │ ├── RedistributeAffinityFailurePolicy.cs
│ │ │ ├── Return503ErrorAffinityFailurePolicy.cs
│ │ │ ├── SessionAffinityConstants.cs
│ │ │ └── SessionAffinityMiddleware.cs
│ │ ├── Transforms
│ │ │ ├── Builder
│ │ │ │ ├── ActionTransformProvider.cs
│ │ │ │ ├── ITransformBuilder.cs
│ │ │ │ ├── ITransformFactory.cs
│ │ │ │ ├── ITransformProvider.cs
│ │ │ │ ├── StructuredTransformer.cs
│ │ │ │ ├── TransformBuilderContext.cs
│ │ │ │ ├── TransformBuilder.cs
│ │ │ │ ├── TransformClusterValidationContext.cs
│ │ │ │ ├── TransformHelpers.cs
│ │ │ │ └── TransformRouteValidationContext.cs
│ │ │ ├── ForwardedTransformActions.cs
│ │ │ ├── ForwardedTransformExtensions.cs
│ │ │ ├── ForwardedTransformFactory.cs
│ │ │ ├── HttpMethodChangeTransform.cs
│ │ │ ├── HttpMethodTransformExtensions.cs
│ │ │ ├── HttpMethodTransformFactory.cs
│ │ │ ├── NodeFormat.cs
│ │ │ ├── PathRouteValuesTransform.cs
│ │ │ ├── PathStringTransform.cs
│ │ │ ├── PathTransformExtensions.cs
│ │ │ ├── PathTransformFactory.cs
│ │ │ ├── QueryParameterFromRouteTransform.cs
│ │ │ ├── QueryParameterFromStaticTransform.cs
│ │ │ ├── QueryParameterRemoveTransform.cs
│ │ │ ├── QueryParameterTransform.cs
│ │ │ ├── QueryTransformContext.cs
│ │ │ ├── QueryTransformExtensions.cs
│ │ │ ├── QueryTransformFactory.cs
│ │ │ ├── RequestFuncTransform.cs
│ │ │ ├── RequestHeaderClientCertTransform.cs
│ │ │ ├── RequestHeaderForwardedTransform.cs
│ │ │ ├── RequestHeaderOriginalHostTransform.cs
│ │ │ ├── RequestHeaderRemoveTransform.cs
│ │ │ ├── RequestHeaderRouteValueTransform.cs
│ │ │ ├── RequestHeadersAllowedTransform.cs
│ │ │ ├── RequestHeadersTransformExtensions.cs
│ │ │ ├── RequestHeadersTransformFactory.cs
│ │ │ ├── RequestHeaderTransform.cs
│ │ │ ├── RequestHeaderValueTransform.cs
│ │ │ ├── RequestHeaderXForwardedForTransform.cs
│ │ │ ├── RequestHeaderXForwardedHostTransform.cs
│ │ │ ├── RequestHeaderXForwardedPrefixTransform.cs
│ │ │ ├── RequestHeaderXForwardedProtoTransform.cs
│ │ │ ├── RequestTransformContext.cs
│ │ │ ├── RequestTransform.cs
│ │ │ ├── ResponseCondition.cs
│ │ │ ├── ResponseFuncTransform.cs
│ │ │ ├── ResponseHeaderRemoveTransform.cs
│ │ │ ├── ResponseHeadersAllowedTransform.cs
│ │ │ ├── ResponseHeaderValueTransform.cs
│ │ │ ├── ResponseTrailerRemoveTransform.cs
│ │ │ ├── ResponseTrailersAllowedTransform.cs
│ │ │ ├── ResponseTrailersFuncTransform.cs
│ │ │ ├── ResponseTrailersTransformContext.cs
│ │ │ ├── ResponseTrailersTransform.cs
│ │ │ ├── ResponseTrailerValueTransform.cs
│ │ │ ├── ResponseTransformContext.cs
│ │ │ ├── ResponseTransform.cs
│ │ │ ├── ResponseTransformExtensions.cs
│ │ │ ├── ResponseTransformFactory.cs
│ │ │ ├── RouteConfigTransformExtensions.cs
│ │ │ └── TransformBuilderContextFuncExtensions.cs
│ │ ├── Utilities
│ │ │ ├── ActivityCancellationTokenSource.cs
│ │ │ ├── AtomicCounter.cs
│ │ │ ├── CaseInsensitiveEqualHelper.cs
│ │ │ ├── CaseSensitiveEqualHelper.cs
│ │ │ ├── CollectionEqualityHelper.cs
│ │ │ ├── ConcurrentDictionaryExtensions.cs
│ │ │ ├── DelegatingStream.cs
│ │ │ ├── EventIds.cs
│ │ │ ├── IClock.cs
│ │ │ ├── IRandomFactory.cs
│ │ │ ├── NullRandomFactory.cs
│ │ │ ├── Observability.cs
│ │ │ ├── ParsedMetadataEntry.cs
│ │ │ ├── RandomFactory.cs
│ │ │ ├── ServiceLookupHelper.cs
│ │ │ ├── SkipLocalsInit.cs
│ │ │ ├── StringSyntaxAttribute.cs
│ │ │ ├── TaskUtilities.cs
│ │ │ ├── TlsFrameHelper.cs
│ │ │ ├── ValueStopwatch.cs
│ │ │ └── ValueStringBuilder.cs
│ │ ├── WebSocketsTelemetry
│ │ │ ├── HttpConnectFeatureWrapper.cs
│ │ │ ├── HttpUpgradeFeatureWrapper.cs
│ │ │ ├── WebSocketCloseReason.cs
│ │ │ ├── WebSocketsParser.cs
│ │ │ ├── WebSocketsTelemetry.cs
│ │ │ ├── WebSocketsTelemetryExtensions.cs
│ │ │ ├── WebSocketsTelemetryMiddleware.cs
│ │ │ └── WebSocketsTelemetryStream.cs
│ │ └── Yarp.ReverseProxy.csproj
│ └── TelemetryConsumption
│ ├── EventListenerService.cs
│ ├── Forwarder
│ │ ├── ForwarderEventListenerService.cs
│ │ ├── ForwarderMetrics.cs
│ │ ├── ForwarderStage.cs
│ │ └── IForwarderTelemetryConsumer.cs
│ ├── Http
│ │ ├── HttpEventListenerService.cs
│ │ ├── HttpMetrics.cs
│ │ └── IHttpTelemetryConsumer.cs
│ ├── IMetricsConsumer.cs
│ ├── Kestrel
│ │ ├── IKestrelTelemetryConsumer.cs
│ │ ├── KestrelEventListenerService.cs
│ │ └── KestrelMetrics.cs
│ ├── MetricsOptions.cs
│ ├── NameResolution
│ │ ├── INameResolutionTelemetryConsumer.cs
│ │ ├── NameResolutionEventListenerService.cs
│ │ └── NameResolutionMetrics.cs
│ ├── NetSecurity
│ │ ├── INetSecurityTelemetryConsumer.cs
│ │ ├── NetSecurityEventListenerService.cs
│ │ └── NetSecurityMetrics.cs
│ ├── README.md
│ ├── Sockets
│ │ ├── ISocketsTelemetryConsumer.cs
│ │ ├── SocketsEventListenerService.cs
│ │ └── SocketsMetrics.cs
│ ├── TelemetryConsumptionExtensions.cs
│ ├── WebSockets
│ │ ├── IWebSocketsTelemetryConsumer.cs
│ │ ├── WebSocketCloseReason.cs
│ │ └── WebSocketsEventListenerService.cs
│ └── Yarp.Telemetry.Consumption.csproj
├── startvs.cmd
├── test
│ ├── Directory.Build.props
│ ├── Kubernetes.Tests
│ │ ├── Certificates
│ │ │ ├── cert.der
│ │ │ ├── CertificateHelperTests.cs
│ │ │ ├── cert.pem
│ │ │ ├── key.der
│ │ │ └── key.pem
│ │ ├── Client
│ │ │ ├── ResourceInformerTests.cs
│ │ │ ├── SyncResourceInformer.cs
│ │ │ ├── V1DeploymentResourceInformer.cs
│ │ │ └── V1PodResourceInformer.cs
│ │ ├── Hosting
│ │ │ ├── BackgroundHostedServiceTests.cs
│ │ │ └── Fakes
│ │ │ ├── FakeBackgroundHostedService.cs
│ │ │ ├── FakeServer.cs
│ │ │ ├── TestLatch.cs
│ │ │ └── TestLatches.cs
│ │ ├── IngressCacheTests.cs
│ │ ├── IngressControllerTests.cs
│ │ ├── IngressConversionTests.cs
│ │ ├── KubeResourceGenerator.cs
│ │ ├── Management
│ │ │ └── KubernetesCoreExtensionsTests.cs
│ │ ├── NamespacedNameTests.cs
│ │ ├── Queues
│ │ │ └── WorkQueueTests.cs
│ │ ├── Rate
│ │ │ ├── LimiterTests.cs
│ │ │ ├── LimitTests.cs
│ │ │ └── ReservationTests.cs
│ │ ├── ReconcilerTests.cs
│ │ ├── testassets
│ │ │ ├── annotations
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ ├── routes.json
│ │ │ │ └── routes.net6.json
│ │ │ ├── basic-ingress
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── exact-match
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── external-name-ingress
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── hostname-routing
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── https
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── ingress-class-not-set
│ │ │ │ └── ingress.yaml
│ │ │ ├── ingress-class-set
│ │ │ │ └── ingress.yaml
│ │ │ ├── mapped-port
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── missing-svc
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── multiple-endpoints-ports
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── multiple-hosts
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── multiple-ingresses
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── multiple-ingresses-one-svc
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── multiple-namespaces
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── port-diff-name
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── port-mismatch
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── resource-informer
│ │ │ │ ├── ResourcesAreListedWhenReadyAsyncIsComplete
│ │ │ │ │ ├── resources.yaml
│ │ │ │ │ └── shouldbe.yaml
│ │ │ │ └── ResourcesWithApiGroupAreListed
│ │ │ │ ├── resources.yaml
│ │ │ │ └── shouldbe.yaml
│ │ │ ├── route-headers
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── route-metadata
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ ├── route-order
│ │ │ │ ├── clusters.json
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── routes.json
│ │ │ └── route-queryparameters
│ │ │ ├── clusters.json
│ │ │ ├── ingress.yaml
│ │ │ └── routes.json
│ │ ├── TestCluster
│ │ │ ├── Controllers
│ │ │ │ ├── ResourceApiController.cs
│ │ │ │ └── ResourceApiGroupController.cs
│ │ │ ├── ITestCluster.cs
│ │ │ ├── ITestClusterHost.cs
│ │ │ ├── Models
│ │ │ │ ├── ListParameters.cs
│ │ │ │ ├── ListResult.cs
│ │ │ │ └── ResourceObject.cs
│ │ │ ├── TestCluster.cs
│ │ │ ├── TestClusterHostBuilder.cs
│ │ │ ├── TestClusterHost.cs
│ │ │ ├── TestClusterOptions.cs
│ │ │ └── TestClusterStartup.cs
│ │ ├── Utils
│ │ │ ├── ResourceSerializers.cs
│ │ │ └── TestLogger.cs
│ │ └── Yarp.Kubernetes.Tests.csproj
│ ├── ReverseProxy.FunctionalTests
│ │ ├── Common
│ │ │ ├── Helpers.cs
│ │ │ ├── HttpSysTestEnvironment.cs
│ │ │ ├── TestEnvironment.cs
│ │ │ └── TestUrlHelper.cs
│ │ ├── DistributedTracingTests.cs
│ │ ├── Expect100ContinueTests.cs
│ │ ├── HeaderTests.cs
│ │ ├── HttpForwarderCancellationTests.cs
│ │ ├── HttpProxyCookieTests.cs
│ │ ├── HttpSysDelegationTests.cs
│ │ ├── PassiveHealthCheckTests.cs
│ │ ├── TelemetryConsumptionTests.cs
│ │ ├── WebSocketsTelemetryTests.cs
│ │ ├── WebSocketTests.cs
│ │ └── Yarp.ReverseProxy.FunctionalTests.csproj
│ ├── ReverseProxy.Tests
│ │ ├── Common
│ │ │ ├── EventAssertExtensions.cs
│ │ │ ├── HttpContentExtensions.cs
│ │ │ ├── MockHttpHandler.cs
│ │ │ ├── TaskExtensions.cs
│ │ │ ├── TestEventListener.cs
│ │ │ ├── TestResources.cs
│ │ │ └── TestTrailersFeature.cs
│ │ ├── Configuration
│ │ │ ├── ActiveHealthCheckConfigTests.cs
│ │ │ ├── ClusterConfigTests.cs
│ │ │ ├── ConfigProvider
│ │ │ │ ├── ConfigurationConfigProviderTests.cs
│ │ │ │ └── ConfigurationReadingExtensionsTests.cs
│ │ │ ├── ConfigValidatorTests.cs
│ │ │ ├── DestinationConfigTests.cs
│ │ │ ├── HealthCheckConfigTests.cs
│ │ │ ├── HttpClientConfigTests.cs
│ │ │ ├── PassiveHealthCheckConfigTests.cs
│ │ │ ├── RouteConfigTests.cs
│ │ │ ├── RouteHeaderTests.cs
│ │ │ ├── RouteMatchTests.cs
│ │ │ ├── RouteQueryParameterTests.cs
│ │ │ ├── SessionAffinityConfigTests.cs
│ │ │ ├── YarpOutputCachePolicyProviderTests.cs
│ │ │ └── YarpRateLimiterPolicyProviderTests.cs
│ │ ├── Delegation
│ │ │ ├── HttpSysDelegatorMiddlewareTests.cs
│ │ │ └── HttpSysDelegatorTests.cs
│ │ ├── Forwarder
│ │ │ ├── ForwarderHttpClientFactoryTests.cs
│ │ │ ├── ForwarderMiddlewareTests.cs
│ │ │ ├── HttpForwarderTests.cs
│ │ │ ├── HttpTransformerTests.cs
│ │ │ ├── RequestUtilitiesTests.cs
│ │ │ ├── ReverseProxyServiceCollectionTests.cs
│ │ │ ├── StreamCopierTests.cs
│ │ │ └── StreamCopyHttpContentTests.cs
│ │ ├── Health
│ │ │ ├── ActiveHealthCheckMonitorTests.cs
│ │ │ ├── ClusterDestinationsUpdaterTests.cs
│ │ │ ├── ConsecutiveFailuresHealthPolicyTests.cs
│ │ │ ├── DefaultProbingRequestFactoryTests.cs
│ │ │ ├── DestinationHealthUpdaterTests.cs
│ │ │ ├── EntityActionSchedulerTests.cs
│ │ │ ├── HealthyAndUnknownDestinationsPolicyTests.cs
│ │ │ ├── HealthyOrPanicDestinationsPolicyTests.cs
│ │ │ ├── PassiveHealthCheckMiddlewareTests.cs
│ │ │ └── TransportFailureRateHealthPolicyTests.cs
│ │ ├── Limits
│ │ │ └── LimitsMiddlewareTests.cs
│ │ ├── LoadBalancing
│ │ │ ├── LoadBalancerMiddlewareTests.cs
│ │ │ └── LoadBalancingPoliciesTests.cs
│ │ ├── Management
│ │ │ └── ProxyConfigManagerTests.cs
│ │ ├── Model
│ │ │ ├── DestinationStateTests.cs
│ │ │ ├── HttpContextFeaturesExtensions.cs
│ │ │ └── ProxyPipelineInitializerMiddlewareTests.cs
│ │ ├── Routing
│ │ │ ├── HeaderMatcherPolicyTests.cs
│ │ │ ├── ProxyEndpointFactoryTests.cs
│ │ │ ├── QueryMatcherPolicyTests.cs
│ │ │ ├── ReverseProxyConventionBuilderTests.cs
│ │ │ └── RoutingTests.cs
│ │ ├── SessionAffinity
│ │ │ ├── AffinitizeTransformProviderTests.cs
│ │ │ ├── AffinitizeTransformTests.cs
│ │ │ ├── AffinityTestHelper.cs
│ │ │ ├── ArrCookieSessionAffinityPolicyTests.cs
│ │ │ ├── BaseSessionAffinityPolicyTests.cs
│ │ │ ├── CookieSessionAffinityPolicyTests.cs
│ │ │ ├── CustomHeaderSessionAffinityPolicyTests.cs
│ │ │ ├── HashCookieSessionAffinityPolicyTests.cs
│ │ │ ├── RedistributeAffinityFailurePolicyTests.cs
│ │ │ ├── Return503ErrorAffinityFailurePolicyTests.cs
│ │ │ └── SessionAffinityMiddlewareTests.cs
│ │ ├── Transforms
│ │ │ ├── Builder
│ │ │ │ └── TransformBuilderTests.cs
│ │ │ ├── DestinationPrefixTransformTests.cs
│ │ │ ├── ForwardedTransformExtensionsTests.cs
│ │ │ ├── HttpMethodChangeTransformTests.cs
│ │ │ ├── HttpMethodTransformExtensionsTests.cs
│ │ │ ├── PathRouteValuesTransformTests.cs
│ │ │ ├── PathStringTransformTests.cs
│ │ │ ├── PathTransformExtensionsTests.cs
│ │ │ ├── QueryParameterFromRouteTransformTests.cs
│ │ │ ├── QueryParameterFromStaticTransformTests.cs
│ │ │ ├── QueryParameterRemoveTransformTests.cs
│ │ │ ├── QueryTransformContextTests.cs
│ │ │ ├── QueryTransformExtensionsTests.cs
│ │ │ ├── RequestHeaderClientCertTransformTests.cs
│ │ │ ├── RequestHeaderForwardedTransformTests.cs
│ │ │ ├── RequestHeaderRemoveTransformTests.cs
│ │ │ ├── RequestHeaderRouteValueTransformTests.cs
│ │ │ ├── RequestHeadersAllowedTransformTests.cs
│ │ │ ├── RequestHeadersTransformExtensionsTests.cs
│ │ │ ├── RequestHeaderValueTransformTests.cs
│ │ │ ├── RequestHeaderXForwardedForTransformTests.cs
│ │ │ ├── RequestHeaderXForwardedHostTransformTests.cs
│ │ │ ├── RequestHeaderXForwardedPrefixTransformTests.cs
│ │ │ ├── RequestHeaderXForwardedProtoTransformTests.cs
│ │ │ ├── RequestTransformTests.cs
│ │ │ ├── ResponseHeaderRemoveTransformTests.cs
│ │ │ ├── ResponseHeadersAllowedTransformTests.cs
│ │ │ ├── ResponseHeaderValueTransformTests.cs
│ │ │ ├── ResponseTrailerRemoveTransformTests.cs
│ │ │ ├── ResponseTrailersAllowedTransformTests.cs
│ │ │ ├── ResponseTrailersTransformTests.cs
│ │ │ ├── ResponseTrailerValueTransformTests.cs
│ │ │ ├── ResponseTransformExtensionsTests.cs
│ │ │ ├── ResponseTransformTests.cs
│ │ │ ├── TransformBuilderContextFuncExtensionsTests.cs
│ │ │ └── TransformExtentionsTestsBase.cs
│ │ ├── Utilities
│ │ │ ├── ActivityCancellationTokenSourceTests.cs
│ │ │ ├── AtomicCounterTests.cs
│ │ │ ├── CaseInsensitiveEqualHelperTests.cs
│ │ │ ├── RandomFactoryTests.cs
│ │ │ └── TlsFrameHelperTests.cs
│ │ ├── validSelfSignedClientEkuCertificate.cer
│ │ ├── WebSocketsTelemetry
│ │ │ └── WebSocketsParserTests.cs
│ │ └── Yarp.ReverseProxy.Tests.csproj
│ ├── TestCertificates
│ │ └── testCert.pfx
│ └── Tests.Common
│ ├── TestAutoMockBase.cs
│ ├── TestRandom.cs
│ ├── TestRandomFactory.cs
│ ├── TestTimeProvider.cs
│ ├── XunitLoggerFactoryExtensions.cs
│ ├── XunitLoggerProvider.cs
│ └── Yarp.Tests.Common.csproj
├── testassets
│ ├── BenchmarkApp
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── BenchmarkApp.csproj
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── README.md
│ │ └── testCert.pfx
│ ├── Directory.Build.props
│ ├── ReverseProxy.Code
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── HealthController.cs
│ │ ├── ForwarderMetricsConsumer.cs
│ │ ├── ForwarderTelemetryConsumer.cs
│ │ ├── MyTransformFactory.cs
│ │ ├── MyTransformProvider.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── ReverseProxy.Code.csproj
│ │ └── TokenService.cs
│ ├── ReverseProxy.Config
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── HealthController.cs
│ │ ├── CustomConfigFilter.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ └── ReverseProxy.Config.csproj
│ ├── ReverseProxy.Direct
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── ReverseProxy.Direct.csproj
│ │ └── TlsFilter.cs
│ ├── TestClient
│ │ ├── CommandLineArgs.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Scenarios
│ │ │ ├── Http1Scenario.cs
│ │ │ ├── Http2PostExpectContinueScenario.cs
│ │ │ ├── Http2Scenario.cs
│ │ │ ├── IScenario.cs
│ │ │ ├── RawUpgradeScenario.cs
│ │ │ ├── SessionAffinityScenario.cs
│ │ │ └── WebSocketsScenario.cs
│ │ └── TestClient.csproj
│ └── TestServer
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── AssemblyInfo.cs
│ ├── Controllers
│ │ ├── HealthController.cs
│ │ ├── HttpController.cs
│ │ ├── UpgradeController.cs
│ │ └── WebSocketsController.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ └── TestServer.csproj
├── test.cmd
├── test.sh
└── THIRD-PARTY-NOTICES.TXT
200 directories, 1006 files
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论