Ocelot v25.0

Welcome to the Ocelot 25.0 documentation!

It is recommended to read all Release Notes if you have deployed the Ocelot app in a production environment and are planning to upgrade to major, minor or patched versions.

Release Notes

Release Tag: 25.0.0
Release Codename: .NET 10
Release Date: July 29, 2026

On November 11th, 2025, the .NET team announced the release of the .NET 10 framework:

This major release upgrades the Ocelot package TFMs to net10.0 in addition to the current net8.0 and net9.0. Thus, the current Ocelot supported frameworks are .NET 8 LTS, .NET 9 STS, and .NET 10 LTS.

Additionally, in this major release the Ocelot team focused on preparing the codebase and its ecosystem for the .NET 10 SDK (.NET 10 milestone), while also extracting several integrated extension packages from the monorepo into their own dedicated repositories to speed up delivery and reduce release coupling. As a result of these DevOps activities, the Ocelot repository now hosts only two package projects — Ocelot (src folder) and Ocelot.Testing (testing folder) — along with two solutions, Ocelot.slnx and Ocelot.Samples.slnx, which can be opened or built only if the .NET 10 SDK is installed. Since the extension packages now live in separate repositories, a new Release Radar status page has been introduced to track their progress.

This major version also includes the following feature updates:

Finally, because the repository has a new folder structure, the development team recommends recloning or even reforking the Ocelot repository for a successful upgrade to the new version in order to avoid potential build errors.

As a best practice, the release strategy has been aligned with .NET SDK monthly patches (usually available between the 10th and 15th of each month). The development team will therefore also aim to roll out monthly Ocelot patches that reference the new .NET SDK patched versions. Ocelot patches will follow the form of a beta or patched version major.minor.*, where * is the Ocelot patch number corresponding to the newly available .NET SDK patch.

Ideally, the Ocelot team expects accelerated releases with more frequent minor/patch versions, because DevOps is now prepared for the new release strategy and offers fast delivery.

For successful contributions, maintainers will announce an identity-verification procedure (details for first-time contributors will be published soon).

What’s New?

What’s Updated?

Patches Included

  • Routing: Issue 2346 was patched by @bhargav-polara in pull request 2351.

    This fixes a bug where downstream URL query parameter names could be corrupted if they contained a placeholder with a non-empty value. The DownstreamUrlCreatorMiddleware query-string merging algorithm was refactored to take full advantage of ASP.NET Core’s QueryHelpers.

  • Error Handling: Issue 2376 was patched by @Majdi-Zlitni in pull request 2379.

    Requests containing non-ASCII characters in HTTP header values previously surfaced as an unhandled HttpRequestException and an HTTP 502 Bad Gateway response. Ocelot now catches this HttpRequestException and maps it to a 400 Bad Request response, in line with RFC 7230Field Parsing” rules.

  • Websockets: Critical issue 2403 was patched by @CurtisRobertOliver in pull request 2406.

    Previously, IP allow/block-list RoutingSecurity Options” were not enforced for WebSocket upgrade requests (a.k.a. the CONNECT HTTP method), allowing them to bypass IP security. WebSocket upgrade requests are now intercepted by the same IPSecurityPolicy used for regular HTTP requests, and denied upgrades now correctly return 403 Forbidden.

    This critical security issue was detected by security scanners on GitHub after the bug was reported. Many thanks to George Chen (@geo-chen) for reporting this critical bug.

  • Aggregation: Issue 2248 was patched by @NandanDevHub in pull request 2328.

    Complex Aggregation routes configured with the RouteKeysConfig array now correctly map route keys to the corresponding aggregator context, fixing a bug where keys could be mismatched or dropped during multiplexing.

  • Administration: Issue 989 was patched by @mmustafasenoglu in pull request 2412.

    The {adminPath}/configuration and {adminPath}/outputcache/{region} endpoints are now decorated with [ApiExplorerSettings(IgnoreApi = true)] so that they no longer appear in Swagger/OpenAPI documentation generated for the downstream API surface.

Contributing

Pull requests, issues, and commentary are welcome at the Ocelot GitHub repository. For ideas and questions, please post them in the Ocelot Discussions space. octocat

Our Development Process is a part of successful Release Process. If you are a new contributor, it is crucial to read Development Process attentively to grasp our methods for efficient and swift feature delivery. We, as a team, advocate adhering to Best Practices throughout the development phase.

We extend our best wishes for your successful contributions to the Ocelot product! octocat