FastEndpoints 1.6.0-beta5

This is a prerelease version of FastEndpoints.
There is a newer version of this package available.
See the version list below for details.
dotnet add package FastEndpoints --version 1.6.0-beta5                
NuGet\Install-Package FastEndpoints -Version 1.6.0-beta5                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FastEndpoints" Version="1.6.0-beta5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FastEndpoints --version 1.6.0-beta5                
#r "nuget: FastEndpoints, 1.6.0-beta5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FastEndpoints as a Cake Addin
#addin nuget:?package=FastEndpoints&version=1.6.0-beta5&prerelease

// Install FastEndpoints as a Cake Tool
#tool nuget:?package=FastEndpoints&version=1.6.0-beta5&prerelease                

FastEndpoints

An alternative for building RESTful Web APIs with ASP.Net 6 which encourages CQRS and Vertical Slice Architecture.

FastEndpoints offers a more elegant solution than the Minimal APIs and MVC Controllers.

Performance is on par with the Minimal APIs and is faster; uses less memory; and outperforms a traditional MVC Controller by about 34k requests per second on a Ryzen 3700X desktop.

Features

  • Define your endpoints in multiple class files (even in deeply nested folders)
  • Auto discovery and registration of endpoints
  • Attribute-free endpoint definitions (no attribute argument type restrictions)
  • Secure by default and supports most authentication/authorization providers
  • Built-in support for JWT Bearer auth scheme
  • Supports policy/permission/role/claim based security
  • Declarative security policy building (inside each endpoint)
  • Supports any IOC container (compatible with asp.net)
  • Dependencies are automatically property injected
  • Model binding support from route/json body/claims/forms
  • Model validation using FluentValidation rules
  • Convenient business logic validation and error responses
  • Easy access to environment and configuration settings
  • Supports pipeline behaviors like MediatR
  • Supports in-process pub/sub event notifications
  • Auto discovery of event notification handlers
  • Convenient integration testing (route-less and strongly-typed)
  • Plays well with the asp.net middleware pipeline
  • Supports swagger/serilog/etc.
  • Visual studio extension (vsix) for easy vertical slice feature scaffolding
  • Plus anything else the minimal apis can do...

Try it out...

install from nuget: Install-Package FastEndpoints

note: the minimum required sdk version is .net 6.0

Code Sample:

Program.cs

var builder = WebApplication.CreateBuilder();
builder.Services.AddFastEndpoints();
builder.Services.AddAuthenticationJWTBearer("SecretKey");

var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.UseFastEndpoints();
app.Run();

Request.cs

public class MyRequest
{
    [From(Claim.UserName)]
    public string UserName { get; set; }  //this value will be auto populated from the user claim

    public int Id { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
}

Validator.cs

public class MyValidator : Validator<MyRequest>
{
    public MyValidator()
    {
        RuleFor(x => x.Id).NotEmpty().WithMessage("Id is required!");
        RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required!");
        RuleFor(x => x.Price).GreaterThan(0).WithMessage("Price is required!");
    }
}

Response.cs

public class MyResponse
{
    public string Name { get; internal set; }
    public int Price { get; set; }
    public string? Message { get; set; }
}

Endpoint.cs

public class MyEndpoint : Endpoint<MyRequest>
{
    public ILogger<MyEndpoint>? Logger { get; set; } //dependency injected

    public MyEndpoint()
    {
        Routes("/api/test/{id}");
        Verbs(Http.POST, Http.PATCH);
        Roles("Admin", "Manager");
        Policies("ManagementTeamCanAccess", "AuditorsCanAccess");
        Permissions(
            Allow.Inventory_Create_Item,
            Allow.Inventory_Retrieve_Item,
            Allow.Inventory_Update_Item);
        Claims(Claim.CustomerID);
    }

    protected override async Task HandleAsync(MyRequest req, CancellationToken ct)
    {
        //can do further validation here in addition to FluentValidation rules
        if (req.Price < 100)
            AddError(r => r.Price, "Price is too low!");

        AddError("This is a general error!");

        ThrowIfAnyErrors(); //breaks the flow and sends a 400 error response containing error details.

        var isProduction = Env.IsProduction(); //read environment
        var smtpServer = Config["SMTP:HostName"]; //read configuration

        var res = new MyResponse //typed response makes integration testing easy
        {
            Message = $"the route parameter value is: {req.Id}",
            Name = req.Name,
            Price = req.Price
        };

        await SendAsync(res);
    }
}

all of your Endpoint definitions are automatically discovered on app startup. no manual mapping is required like with minimal apis.

Documentation

documentation will be available within a few weeks once v1.0 is released. in the meantime have a browse through the Web, Test and Benchmark projects to see more examples.

Benchmark results

Bombardier load test

FastEndpoints (33,772 more requests per second than mvc controller)

Statistics        Avg      Stdev        Max
  Reqs/sec    134251.40   16085.58  190809.19
  Latency        3.68ms     1.35ms   371.64ms
  HTTP codes:
    1xx - 0, 2xx - 1357086, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    68.05MB/s

AspNet Minimal Api

Statistics        Avg      Stdev        Max
  Reqs/sec    136898.40   13732.59  185851.32
  Latency        3.62ms   470.46us    94.99ms
  HTTP codes:
    1xx - 0, 2xx - 1379343, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    69.19MB/s

AspNet MVC Controller

Statistics        Avg      Stdev        Max
  Reqs/sec    100479.98   13649.02  123388.00
  Latency        4.90ms     1.67ms   375.00ms
  HTTP codes:
    1xx - 0, 2xx - 1019171, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    50.91MB/s

Carter Module

Statistics        Avg      Stdev        Max
  Reqs/sec      7592.05    3153.39   18037.17
  Latency       65.45ms    17.77ms   560.62ms
  HTTP codes:
    1xx - 0, 2xx - 76638, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:     3.82MB/s

parameters used: -c 500 -m POST -f "body.json" -H "Content-Type:application/json" -d 10s

BenchmarkDotNet head-to-head results

Method Mean Error StdDev Ratio RatioSD Gen 0 Gen 1 Allocated
FastEndpointsEndpoint 83.03 μs 5.007 μs 3.312 μs 1.00 0.00 2.6000 0.1000 22 KB
MinimalApiEndpoint 83.51 μs 3.781 μs 2.501 μs 1.01 0.03 2.5000 - 21 KB
AspNetCoreMVC 114.20 μs 3.806 μs 2.518 μs 1.38 0.06 3.4000 0.2000 28 KB
CarterModule 607.48 μs 1.455 μs 0.962 μs 7.33 0.29 5.9000 2.9000 48 KB
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (116)

Showing the top 5 NuGet packages that depend on FastEndpoints:

Package Downloads
FastEndpoints.Swagger

Swagger support for FastEndpoints.

Elsa

Bundles the most commonly-used packages when building an Elsa workflows application.

FastEndpoints.Security

Security library for FastEndpoints.

FastEndpoints.Reflection

Package Description

FastEndpoints.ApiExplorer

Package Description

GitHub repositories (17)

Showing the top 5 popular GitHub repositories that depend on FastEndpoints:

Repository Stars
ardalis/CleanArchitecture
Clean Architecture Solution Template: A starting point for Clean Architecture with ASP.NET Core
elsa-workflows/elsa-core
A .NET workflows library
RRQM/TouchSocket
TouchSocket is an integrated .NET networking framework that includes modules for socket, TCP, UDP, SSL, named pipes, HTTP, WebSocket, RPC, and more. It offers a one-stop solution for TCP packet issues and enables quick implementation of custom data message parsing using protocol templates.
CodeMazeBlog/CodeMazeGuides
The main repository for all the Code Maze guides
Elfocrash/clean-minimal-api
A project showcasing how you can build a clean Minimal API using FastEndpoints
Version Downloads Last updated
5.32.0.12-beta 0 12/22/2024
5.32.0.11-beta 48 12/21/2024
5.32.0.10-beta 142 12/20/2024
5.32.0.9-beta 51 12/19/2024
5.32.0.8-beta 44 12/19/2024
5.32.0.7-beta 131 12/17/2024
5.32.0.6-beta 177 12/13/2024
5.32.0.5-beta 197 12/11/2024
5.32.0.4-beta 115 12/10/2024
5.32.0.3-beta 275 12/6/2024
5.32.0.2-beta 145 12/5/2024
5.32.0.1-beta 184 12/2/2024
5.32.0 31,199 12/1/2024
5.31.0.18-beta 285 11/26/2024
5.31.0.17-beta 680 11/23/2024
5.31.0.16-beta 106 11/23/2024
5.31.0.15-beta 328 11/22/2024
5.31.0.14-beta 130 11/22/2024
5.31.0.13-beta 134 11/21/2024
5.31.0.12-beta 167 11/20/2024
5.31.0.11-beta 106 11/20/2024
5.31.0.10-beta 136 11/19/2024
5.31.0.9-beta 468 11/16/2024
5.31.0.8-beta 329 11/15/2024
5.31.0.7-beta 210 11/14/2024
5.31.0.6-beta 422 11/12/2024
5.31.0.5-beta 308 11/9/2024
5.31.0.4-beta 137 11/7/2024
5.31.0.3-beta 290 11/5/2024
5.31.0.2-beta 121 11/5/2024
5.31.0.1-beta 259 11/5/2024
5.31.0 102,890 11/3/2024
5.30.0.23-beta 218 11/2/2024
5.30.0.22-beta 122 11/1/2024
5.30.0.21-beta 133 10/31/2024
5.30.0.20-beta 103 10/30/2024
5.30.0.19-beta 378 10/29/2024
5.30.0.18-beta 174 10/28/2024
5.30.0.17-beta 112 10/28/2024
5.30.0.16-beta 141 10/26/2024
5.30.0.15-beta 152 10/24/2024
5.30.0.14-beta 295 10/23/2024
5.30.0.13-beta 512 10/18/2024
5.30.0.12-beta 103 10/17/2024
5.30.0.11-beta 281 10/17/2024
5.30.0.10-beta 1,451 10/16/2024
5.30.0.9-beta 183 10/15/2024
5.30.0.8-beta 119 10/14/2024
5.30.0.7-beta 102 10/13/2024
5.30.0.6-beta 606 10/9/2024
5.30.0.5-beta 111 10/9/2024
5.30.0.4-beta 114 10/8/2024
5.30.0.3-beta 119 10/6/2024
5.30.0.2-beta 98 10/5/2024
5.30.0.1-beta 105 10/4/2024
5.30.0 133,491 10/1/2024
5.29.0.13-beta 92 10/1/2024
5.29.0.12-beta 350 9/27/2024
5.29.0.11-beta 596 9/26/2024
5.29.0.10-beta 107 9/25/2024
5.29.0.8-beta 212 9/20/2024
5.29.0.7-beta 159 9/20/2024
5.29.0.6-beta 145 9/19/2024
5.29.0.5-beta 124 9/19/2024
5.29.0.4-beta 145 9/18/2024
5.29.0.3-beta 212 9/17/2024
5.29.0.2-beta 142 9/17/2024
5.29.0.1-beta 576 9/11/2024
5.29.0 121,418 8/31/2024
5.28.0.7-beta 149 8/30/2024
5.28.0.6-beta 1,904 8/16/2024
5.28.0.5-beta 414 8/11/2024
5.28.0.4-beta 155 8/9/2024
5.28.0.3-beta 306 8/6/2024
5.28.0.2-beta 681 8/1/2024
5.28.0.1-beta 127 7/31/2024
5.28.0 143,550 7/31/2024
5.27.0.14-beta 131 7/30/2024
5.27.0.13-beta 623 7/25/2024
5.27.0.12-beta 376 7/18/2024
5.27.0.11-beta 207 7/16/2024
5.27.0.10-beta 175 7/13/2024
5.27.0.9-beta 151 7/12/2024
5.27.0.8-beta 139 7/12/2024
5.27.0.7-beta 150 7/11/2024
5.27.0.6-beta 458 7/10/2024
5.27.0.5-beta 376 7/8/2024
5.27.0.4-beta 160 7/8/2024
5.27.0.3-beta 1,612 7/6/2024
5.27.0.2-beta 159 7/6/2024
5.27.0.1-beta 599 7/4/2024
5.27.0 196,258 7/4/2024
5.26.0.27-beta 154 7/1/2024
5.26.0.26-beta 157 7/1/2024
5.26.0.25-beta 160 6/29/2024
5.26.0.24-beta 764 6/26/2024
5.26.0.23-beta 142 6/26/2024
5.26.0.22-beta 179 6/26/2024
5.26.0.21-beta 143 6/26/2024
5.26.0.20-beta 217 6/24/2024
5.26.0.19-beta 160 6/23/2024
5.26.0.18-beta 158 6/23/2024
5.26.0.17-beta 160 6/23/2024
5.26.0.16-beta 156 6/23/2024
5.26.0.15-beta 210 6/21/2024
5.26.0.14-beta 300 6/20/2024
5.26.0.13-beta 167 6/20/2024
5.26.0.12-beta 184 6/20/2024
5.26.0.11-beta 218 6/19/2024
5.26.0.10-beta 185 6/19/2024
5.26.0.9-beta 301 6/12/2024
5.26.0.8-beta 145 6/12/2024
5.26.0.7-beta 646 6/9/2024
5.26.0.6-beta 144 6/8/2024
5.26.0.5-beta 165 6/8/2024
5.26.0.4-beta 166 6/7/2024
5.26.0.3-beta 343 6/6/2024
5.26.0.2-beta 163 6/4/2024
5.26.0.1-beta 183 6/1/2024
5.26.0 166,992 5/31/2024
5.25.0.15-beta 1,143 5/29/2024
5.25.0.14-beta 252 5/27/2024
5.25.0.13-beta 204 5/24/2024
5.25.0.12-beta 319 5/22/2024
5.25.0.11-beta 158 5/22/2024
5.25.0.10-beta 2,542 5/18/2024
5.25.0.9-beta 556 5/17/2024
5.25.0.8-beta 145 5/17/2024
5.25.0.7-beta 284 5/15/2024
5.25.0.6-beta 127 5/15/2024
5.25.0.5-beta 326 5/11/2024
5.25.0.4-beta 352 5/7/2024
5.25.0.3-beta 682 5/6/2024
5.25.0.2-beta 183 5/5/2024
5.25.0.1-beta 171 5/3/2024
5.25.0 145,966 5/2/2024
5.24.0.12-beta 143 5/2/2024
5.24.0.11-beta 162 5/1/2024
5.24.0.9-beta 206 4/28/2024
5.24.0.8-beta 748 4/25/2024
5.24.0.7-beta 168 4/24/2024
5.24.0.6-beta 151 4/24/2024
5.24.0.5-beta 148 4/23/2024
5.24.0.4-beta 740 4/21/2024
5.24.0.3-beta 188 4/18/2024
5.24.0.2-beta 151 4/18/2024
5.24.0.1-beta 378 4/9/2024
5.24.0 221,011 4/1/2024
5.23.0.15-beta 292 3/28/2024
5.23.0.14-beta 284 3/26/2024
5.23.0.13-beta 380 3/24/2024
5.23.0.12-beta 593 3/22/2024
5.23.0.11-beta 274 3/21/2024
5.23.0.10-beta 387 3/19/2024
5.23.0.9-beta 321 3/15/2024
5.23.0.8-beta 358 3/14/2024
5.23.0.7-beta 249 3/14/2024
5.23.0.6-beta 267 3/13/2024
5.23.0.5-beta 885 3/11/2024
5.23.0.4-beta 1,670 3/8/2024
5.23.0.3-beta 547 3/5/2024
5.23.0.2-beta 431 3/3/2024
5.23.0.1-beta 691 2/29/2024
5.23.0 241,608 2/29/2024
5.22.0.18-beta 356 2/28/2024
5.22.0.17-beta 359 2/27/2024
5.22.0.16-beta 336 2/27/2024
5.22.0.15-beta 402 2/26/2024
5.22.0.14-beta 377 2/26/2024
5.22.0.13-beta 378 2/23/2024
5.22.0.12-beta 864 2/21/2024
5.22.0.11-beta 395 2/21/2024
5.22.0.10-beta 394 2/21/2024
5.22.0.9-beta 401 2/20/2024
5.22.0.8-beta 511 2/18/2024
5.22.0.7-beta 562 2/15/2024
5.22.0.6-beta 420 2/14/2024
5.22.0.5-beta 490 2/12/2024
5.22.0.4-beta 448 2/12/2024
5.22.0.3-beta 413 2/12/2024
5.22.0.2-beta 471 2/8/2024
5.22.0.1-beta 467 2/8/2024
5.22.0 143,738 2/1/2024
5.21.2.20-beta 408 1/31/2024
5.21.2.19-beta 456 1/30/2024
5.21.2.18-beta 522 1/27/2024
5.21.2.17-beta 510 1/26/2024
5.21.2.16-beta 2,309 1/21/2024
5.21.2.15-beta 510 1/18/2024
5.21.2.14-beta 582 1/17/2024
5.21.2.13-beta 486 1/16/2024
5.21.2.12-beta 501 1/15/2024
5.21.2.11-beta 471 1/13/2024
5.21.2.10-beta 521 1/12/2024
5.21.2.9-beta 529 1/11/2024
5.21.2.8-beta 510 1/10/2024
5.21.2.7-beta 502 1/10/2024
5.21.2.6-beta 550 1/9/2024
5.21.2.5-beta 590 1/9/2024
5.21.2.4-beta 568 1/7/2024
5.21.2.3-beta 515 1/6/2024
5.21.2.2-beta 541 1/4/2024
5.21.2.1-beta 496 1/4/2024
5.21.2 188,385 1/2/2024
5.21.1.1-beta 492 1/2/2024
5.21.1 816 1/2/2024
5.21.0 4,399 1/2/2024
5.20.1.12-beta 583 12/30/2023
5.20.1.11-beta 503 12/30/2023
5.20.1.10-beta 516 12/29/2023
5.20.1.9-beta 540 12/29/2023
5.20.1.8-beta 583 12/27/2023
5.20.1.7-beta 3,867 12/18/2023
5.20.1.6-beta 614 12/15/2023
5.20.1.5-beta 670 12/13/2023
5.20.1.4-beta 469 12/12/2023
5.20.1.3-beta 566 12/9/2023
5.20.1.2-beta 546 12/8/2023
5.20.1.1-beta 817 12/7/2023
5.20.1 84,461 12/1/2023
5.20.0.2-beta 556 11/30/2023
5.20.0.1-beta 504 11/30/2023
5.20.0 37,538 11/28/2023
5.20.0-rc2 2,179 11/26/2023
5.20.0-rc1 2,062 11/18/2023
5.19.2 62,494 11/7/2023
5.19.1 13,408 11/4/2023
5.19.0.13-beta 582 11/15/2023
5.19.0.12-beta 514 11/15/2023
5.19.0.11-beta 518 11/15/2023
5.19.0.10-beta 544 11/9/2023
5.19.0.9-beta 498 11/7/2023
5.19.0.8-beta 470 11/6/2023
5.19.0.7-beta 531 11/4/2023
5.19.0.6-beta 492 11/3/2023
5.19.0.5-beta 509 11/2/2023
5.19.0.4-beta 514 11/2/2023
5.19.0.3-beta 537 11/1/2023
5.19.0.2-beta 502 10/31/2023
5.19.0.1-beta 495 10/29/2023
5.19.0 15,676 10/29/2023
5.18.0.9-beta 516 10/27/2023
5.18.0.8-beta 623 10/25/2023
5.18.0.7-beta 558 10/24/2023
5.18.0.6-beta 585 10/19/2023
5.18.0.5-beta 1,067 10/14/2023
5.18.0.4-beta 535 10/12/2023
5.18.0.3-beta 492 10/12/2023
5.18.0.2-beta 557 10/11/2023
5.18.0.1-beta 627 10/5/2023
5.18.0 103,110 10/1/2023
5.17.1.32-beta 512 10/1/2023
5.17.1.31-beta 546 9/29/2023
5.17.1.30-beta 498 9/29/2023
5.17.1.29-beta 937 9/28/2023
5.17.1.28-beta 510 9/27/2023
5.17.1.27-beta 528 9/27/2023
5.17.1.26-beta 504 9/27/2023
5.17.1.25-beta 559 9/26/2023
5.17.1.24-beta 521 9/24/2023
5.17.1.23-beta 491 9/23/2023
5.17.1.22-beta 486 9/23/2023
5.17.1.21-beta 491 9/22/2023
5.17.1.20-beta 500 9/21/2023
5.17.1.19-beta 1,057 9/13/2023
5.17.1.18-beta 521 9/12/2023
5.17.1.17-beta 535 9/12/2023
5.17.1.16-beta 510 9/11/2023
5.17.1.15-beta 539 9/10/2023
5.17.1.14-beta 511 9/9/2023
5.17.1.13-beta 524 9/8/2023
5.17.1.12-beta 484 9/8/2023
5.17.1.11-beta 539 9/8/2023
5.17.1.10-beta 479 9/8/2023
5.17.1.9-beta 486 9/8/2023
5.17.1.8-beta 549 9/7/2023
5.17.1.7-beta 531 9/7/2023
5.17.1.6-beta 1,038 9/7/2023
5.17.1.5-beta 562 9/6/2023
5.17.1.4-beta 464 9/6/2023
5.17.1.3-beta 560 9/6/2023
5.17.1.2-beta 538 9/5/2023
5.17.1.1 40,827 9/5/2023
5.17.1 2,510 9/4/2023
5.17.0.2-beta 485 9/4/2023
5.17.0.1-beta 526 9/4/2023
5.17.0 1,464 9/3/2023
5.16.0.4-beta 515 9/3/2023
5.16.0.3-beta 555 9/2/2023
5.16.0.2-beta 518 8/31/2023
5.16.0.1-beta 540 8/30/2023
5.16.0 25,294 8/30/2023
5.15.0.22-beta 687 8/26/2023
5.15.0.21-beta 574 8/24/2023
5.15.0.20-beta 951 8/23/2023
5.15.0.19-beta 507 8/23/2023
5.15.0.18-beta 553 8/18/2023
5.15.0.17-beta 940 8/16/2023
5.15.0.16-beta 592 8/14/2023
5.15.0.15-beta 492 8/14/2023
5.15.0.14-beta 534 8/13/2023
5.15.0.12-beta 499 8/11/2023
5.15.0.11-beta 630 8/10/2023
5.15.0.9-beta 518 8/10/2023
5.15.0.8-beta 507 8/10/2023
5.15.0.7-beta 498 8/10/2023
5.15.0.6-beta 527 8/10/2023
5.15.0.5-beta 504 8/9/2023
5.15.0.4-beta 563 8/9/2023
5.15.0.3-beta 519 8/8/2023
5.15.0.2-beta 3,438 8/4/2023
5.15.0.1-beta 665 8/4/2023
5.15.0 95,081 8/1/2023
5.14.0.7-beta 562 7/31/2023
5.14.0.6-beta 533 7/30/2023
5.14.0.5-beta 559 7/29/2023
5.14.0.4-beta 498 7/28/2023
5.14.0.3-beta 574 7/28/2023
5.14.0.2-beta 575 7/26/2023
5.14.0.1-beta 830 7/20/2023
5.14.0 39,116 7/16/2023
5.13.0.9-beta 514 7/14/2023
5.13.0.8-beta 547 7/12/2023
5.13.0.7-beta 544 7/11/2023
5.13.0.6-beta 484 7/11/2023
5.13.0.5-beta 504 7/10/2023
5.13.0.4-beta 537 7/8/2023
5.13.0.3-beta 550 7/7/2023
5.13.0.2-beta 552 7/6/2023
5.13.0.1-beta 544 6/27/2023
5.13.0 57,450 6/24/2023
5.12.0.4-beta 512 6/23/2023
5.12.0.3-beta 598 6/19/2023
5.12.0.2-beta 533 6/18/2023
5.12.0.1-beta 757 6/14/2023
5.12.0 29,551 6/11/2023
5.11.0.6-beta 526 6/10/2023
5.11.0.5-beta 537 6/9/2023
5.11.0.4-beta 582 6/8/2023
5.11.0.3-beta 631 6/6/2023
5.11.0.2-beta 612 5/31/2023
5.11.0.1-beta 527 5/30/2023
5.11.0 37,500 5/27/2023
5.10.0.5-beta 545 5/24/2023
5.10.0.4-beta 552 5/22/2023
5.10.0.3-beta 867 5/7/2023
5.10.0.2-beta 520 5/6/2023
5.10.0.1-beta 583 5/3/2023
5.10.0 98,334 4/30/2023
5.9.0.4-beta 542 4/29/2023
5.9.0.3-beta 532 4/29/2023
5.9.0.2-beta 1,214 4/25/2023
5.9.0.1-beta 567 4/24/2023
5.9.0 62,921 4/22/2023
5.8.1.15-beta 526 4/21/2023
5.8.1.14-beta 568 4/21/2023
5.8.1.13-beta 576 4/20/2023
5.8.1.12-beta 488 4/20/2023
5.8.1.11-beta 528 4/20/2023
5.8.1.10-beta 520 4/19/2023
5.8.1.9-beta 570 4/18/2023
5.8.1.8-beta 771 4/16/2023
5.8.1.7-beta 619 4/10/2023
5.8.1.6-beta 504 4/8/2023
5.8.1.5-beta 513 4/8/2023
5.8.1.4-beta 492 4/7/2023
5.8.1.3-beta 632 3/30/2023
5.8.1.2-beta 697 3/30/2023
5.8.1.1-beta 693 3/29/2023
5.8.1 64,912 3/24/2023
5.8.0.8-beta 538 3/23/2023
5.8.0.7-beta 522 3/23/2023
5.8.0.6-beta 550 3/20/2023
5.8.0.5-beta 549 3/17/2023
5.8.0.4-beta 536 3/17/2023
5.8.0.3-beta 602 3/13/2023
5.8.0.2-beta 717 3/8/2023
5.8.0.1-beta 542 3/6/2023
5.8.0 40,202 3/5/2023
5.7.2.14-beta 557 3/4/2023
5.7.2.13-beta 608 3/2/2023
5.7.2.12-beta 1,497 3/2/2023
5.7.2.11-beta 507 3/2/2023
5.7.2.10-beta 595 3/1/2023
5.7.2.9-beta 588 2/28/2023
5.7.2.8-beta 561 2/28/2023
5.7.2.7-beta 503 2/28/2023
5.7.2.6-beta 520 2/27/2023
5.7.2.5-beta 538 2/26/2023
5.7.2.4-beta 629 2/24/2023
5.7.2.3-beta 546 2/23/2023
5.7.2.2-beta 542 2/22/2023
5.7.2.1-beta 597 2/19/2023
5.7.2 79,515 2/14/2023
5.7.1.1-beta 547 2/13/2023
5.7.1 15,430 2/9/2023
5.7.0.4-beta 762 2/6/2023
5.7.0.3-beta 536 2/6/2023
5.7.0.2-beta 735 2/3/2023
5.7.0.1-beta 575 1/31/2023
5.7.0 26,739 1/29/2023
5.6.0.6-beta 578 1/28/2023
5.6.0.5-beta 673 1/26/2023
5.6.0.4-beta 585 1/25/2023
5.6.0.3-beta 806 1/18/2023
5.6.0.2-beta 504 1/18/2023
5.6.0.1-beta 601 1/17/2023
5.6.0 96,259 1/2/2023
5.5.0.5-beta 1,279 12/19/2022
5.5.0.4-beta 564 12/17/2022
5.5.0.3-beta 892 12/12/2022
5.5.0.2-beta 534 12/12/2022
5.5.0.1-beta 532 12/10/2022
5.5.0 49,360 12/9/2022
5.4.1.7-beta 559 12/7/2022
5.4.1.6-beta 1,020 11/26/2022
5.4.1.5-beta 538 11/25/2022
5.4.1.4-beta 641 11/21/2022
5.4.1.3-beta 547 11/19/2022
5.4.1.2-beta 549 11/19/2022
5.4.1.1-beta 568 11/18/2022
5.4.1 64,310 11/18/2022
5.4.0.2-beta 512 11/17/2022
5.4.0.1-beta 1,049 11/10/2022
5.4.0 12,998 11/9/2022
5.3.2.13-beta 522 11/9/2022
5.3.2.12-beta 526 11/8/2022
5.3.2.11-beta 616 11/8/2022
5.3.2.10-beta 506 11/8/2022
5.3.2.9-beta 539 11/7/2022
5.3.2.8-beta 502 11/7/2022
5.3.2.7-beta 522 11/7/2022
5.3.2.6-beta 498 11/7/2022
5.3.2.5-beta 533 11/7/2022
5.3.2.4-beta 537 11/6/2022
5.3.2.3-beta 498 11/6/2022
5.3.2.2-beta 514 11/5/2022
5.3.2.1-beta 521 11/4/2022
5.3.2 34,746 11/4/2022
5.3.1.5-beta 498 11/3/2022
5.3.1.4-beta 535 11/3/2022
5.3.1.3-beta 528 11/2/2022
5.3.1.2-beta 512 11/2/2022
5.3.1.1-beta 481 11/2/2022
5.3.1 10,734 10/31/2022
5.3.0.1-beta 537 10/30/2022
5.3.0 1,280 10/29/2022
5.3.0-beta 534 10/28/2022
5.2.1.17-beta 532 10/28/2022
5.2.1.16-beta 616 10/26/2022
5.2.1.15-beta 490 10/26/2022
5.2.1.14-beta 543 10/26/2022
5.2.1.13-beta 578 10/25/2022
5.2.1.12-beta 552 10/25/2022
5.2.1.11-beta 510 10/25/2022
5.2.1.10-beta 537 10/24/2022
5.2.1.9-beta 609 10/21/2022
5.2.1.8-beta 557 10/20/2022
5.2.1.7-beta 1,556 10/19/2022
5.2.1.6-beta 588 10/19/2022
5.2.1.5-beta 828 10/18/2022
5.2.1.4-beta 527 10/17/2022
5.2.1.3-beta 504 10/17/2022
5.2.1.2-beta 532 10/16/2022
5.2.1.1-beta 541 10/15/2022
5.2.1 23,056 10/15/2022
5.2.0.2-beta 479 10/15/2022
5.2.0.1-beta 546 10/14/2022
5.2.0 2,527 10/13/2022
5.2.0-beta9 990 9/16/2022
5.2.0-beta8 591 9/16/2022
5.2.0-beta7 615 9/14/2022
5.2.0-beta6 604 9/14/2022
5.2.0-beta5 576 9/14/2022
5.2.0-beta4 550 9/13/2022
5.2.0-beta3 548 9/12/2022
5.2.0-beta28 591 10/13/2022
5.2.0-beta27 573 10/12/2022
5.2.0-beta26 504 10/9/2022
5.2.0-beta25 505 10/6/2022
5.2.0-beta24 535 10/6/2022
5.2.0-beta23 503 10/5/2022
5.2.0-beta22 512 9/30/2022
5.2.0-beta21 556 9/27/2022
5.2.0-beta20 558 9/26/2022
5.2.0-beta2 636 9/10/2022
5.2.0-beta19 552 9/25/2022
5.2.0-beta18 564 9/25/2022
5.2.0-beta17 528 9/23/2022
5.2.0-beta16 515 9/22/2022
5.2.0-beta15 618 9/20/2022
5.2.0-beta14 517 9/20/2022
5.2.0-beta13 561 9/19/2022
5.2.0-beta12 576 9/19/2022
5.2.0-beta11 555 9/17/2022
5.2.0-beta10 547 9/16/2022
5.2.0-beta1 532 9/10/2022
5.1.1-beta5 598 9/10/2022
5.1.1-beta4 552 9/9/2022
5.1.1-beta3 527 9/9/2022
5.1.1-beta2 504 9/9/2022
5.1.1-beta1 501 9/8/2022
5.1.0 34,739 9/8/2022
5.1.0-beta9 743 8/31/2022
5.1.0-beta8 520 8/29/2022
5.1.0-beta7 527 8/29/2022
5.1.0-beta6 554 8/28/2022
5.1.0-beta5 494 8/27/2022
5.1.0-beta4 511 8/27/2022
5.1.0-beta3 590 8/26/2022
5.1.0-beta2 523 8/25/2022
5.1.0-beta17 533 9/7/2022
5.1.0-beta16 503 9/7/2022
5.1.0-beta15 1,069 9/5/2022
5.1.0-beta14 504 9/4/2022
5.1.0-beta13 534 9/2/2022
5.1.0-beta12 510 9/1/2022
5.1.0-beta11 549 9/1/2022
5.1.0-beta10 481 8/31/2022
5.1.0-beta1 516 8/25/2022
5.0.0 22,640 8/24/2022
5.0.0-beta9 618 8/21/2022
5.0.0-beta8 518 8/20/2022
5.0.0-beta7 517 8/20/2022
5.0.0-beta6 610 8/18/2022
5.0.0-beta5 675 8/17/2022
5.0.0-beta4 502 8/17/2022
5.0.0-beta3 523 8/16/2022
5.0.0-beta2 557 8/15/2022
5.0.0-beta13 469 8/23/2022
5.0.0-beta12 603 8/23/2022
5.0.0-beta11 625 8/22/2022
5.0.0-beta10 502 8/22/2022
5.0.0-beta1 517 8/15/2022
4.5.0-beta9 1,049 8/13/2022
4.5.0-beta8 587 8/12/2022
4.5.0-beta7 652 8/11/2022
4.5.0-beta6 710 8/9/2022
4.5.0-beta5 496 8/8/2022
4.5.0-beta4 599 8/8/2022
4.5.0-beta3 515 8/8/2022
4.5.0-beta2 546 8/8/2022
4.5.0-beta15 540 8/15/2022
4.5.0-beta14 545 8/14/2022
4.5.0-beta13 538 8/14/2022
4.5.0-beta12 516 8/14/2022
4.5.0-beta11 515 8/14/2022
4.5.0-beta10 503 8/13/2022
4.5.0-beta1 557 8/4/2022
4.4.0 29,909 8/3/2022
4.4.0-beta9 526 8/2/2022
4.4.0-beta8 526 7/31/2022
4.4.0-beta7 518 7/28/2022
4.4.0-beta6 595 7/24/2022
4.4.0-beta5 552 7/24/2022
4.4.0-beta4 540 7/23/2022
4.4.0-beta3 551 7/22/2022
4.4.0-beta2 537 7/22/2022
4.4.0-beta1 559 7/20/2022
4.3.2-beta1 637 7/13/2022
4.3.1 23,520 7/13/2022
4.3.1-beta5 735 7/10/2022
4.3.1-beta4 698 7/3/2022
4.3.1-beta3 530 7/2/2022
4.3.1-beta2 1,450 7/2/2022
4.3.1-beta1 592 6/30/2022
4.3.0 74,244 6/17/2022
4.3.0-beta9 1,106 5/30/2022
4.3.0-beta8 541 5/29/2022
4.3.0-beta7 650 5/27/2022
4.3.0-beta6 629 5/25/2022
4.3.0-beta5 596 5/24/2022
4.3.0-beta4 542 5/24/2022
4.3.0-beta3 507 5/23/2022
4.3.0-beta2 601 5/21/2022
4.3.0-beta11 520 6/3/2022
4.3.0-beta10 497 5/31/2022
4.3.0-beta1 557 5/20/2022
4.2.1-beta2 520 5/19/2022
4.2.1-beta1 513 5/19/2022
4.2.0 13,936 5/19/2022
4.2.0-beta9 744 5/13/2022
4.2.0-beta8 526 5/13/2022
4.2.0-beta7 571 5/11/2022
4.2.0-beta6 551 5/11/2022
4.2.0-beta5 545 5/10/2022
4.2.0-beta4 541 5/9/2022
4.2.0-beta3 572 5/7/2022
4.2.0-beta2 536 5/6/2022
4.2.0-beta10 524 5/18/2022
4.2.0-beta1 654 4/28/2022
4.1.0 13,861 4/26/2022
4.1.0-beta8 8,243 4/26/2022
4.1.0-beta7 554 4/26/2022
4.1.0-beta6 515 4/24/2022
4.1.0-beta5 492 4/23/2022
4.1.0-beta4 635 4/10/2022
4.1.0-beta3 555 4/6/2022
4.1.0-beta2 793 4/2/2022
4.1.0-beta1 586 3/31/2022
4.0.0 42,411 3/30/2022
4.0.0-beta6 615 3/26/2022
4.0.0-beta5 585 3/24/2022
4.0.0-beta4 550 3/23/2022
4.0.0-beta3 569 3/22/2022
4.0.0-beta2 553 3/22/2022
4.0.0-beta1 512 3/22/2022
3.12.1-beta2 544 3/22/2022
3.12.1-beta1 528 3/21/2022
3.11.0 7,964 3/21/2022
3.11.0-beta9 558 3/17/2022
3.11.0-beta8 509 3/16/2022
3.11.0-beta7 555 3/15/2022
3.11.0-beta6 552 3/14/2022
3.11.0-beta5 526 3/14/2022
3.11.0-beta4 540 3/14/2022
3.11.0-beta3 529 3/13/2022
3.11.0-beta2 529 3/13/2022
3.11.0-beta12 552 3/18/2022
3.11.0-beta11 682 3/17/2022
3.11.0-beta10 513 3/17/2022
3.11.0-beta1 549 3/10/2022
3.10.0 4,833 3/10/2022
3.10.0-beta7 546 3/9/2022
3.10.0-beta6 543 3/9/2022
3.10.0-beta5 573 3/8/2022
3.10.0-beta4 544 3/8/2022
3.10.0-beta3 510 3/8/2022
3.10.0-beta2 595 3/5/2022
3.10.0-beta1 529 3/5/2022
3.9.1 1,723 3/4/2022
3.9.0-beta9 547 3/2/2022
3.9.0-beta8 548 3/1/2022
3.9.0-beta7 522 3/1/2022
3.9.0-beta6 530 3/1/2022
3.9.0-beta5 522 3/1/2022
3.9.0-beta4 515 3/1/2022
3.9.0-beta3 533 2/28/2022
3.9.0-beta2 518 2/28/2022
3.9.0-beta13 528 3/4/2022
3.9.0-beta12 559 3/4/2022
3.9.0-beta11 561 3/3/2022
3.9.0-beta10 514 3/2/2022
3.9.0-beta1 540 2/27/2022
3.8.1 3,293 2/27/2022
3.8.0 1,435 2/26/2022
3.7.1-beta2 570 2/25/2022
3.7.1-beta1 486 2/25/2022
3.7.0 1,321 2/25/2022
3.6.0 1,476 2/23/2022
3.6.0-beta8 546 2/23/2022
3.6.0-beta7 522 2/23/2022
3.6.0-beta6 544 2/23/2022
3.6.0-beta5 530 2/22/2022
3.6.0-beta4 552 2/22/2022
3.6.0-beta3 533 2/21/2022
3.6.0-beta2 526 2/21/2022
3.6.0-beta1 548 2/19/2022
3.5.1 1,290 2/19/2022
3.5.1-beta4 542 2/18/2022
3.5.1-beta3 536 2/18/2022
3.5.1-beta2 559 2/18/2022
3.5.1-beta1 551 2/18/2022
3.5.0 1,358 2/16/2022
3.5.0-beta9 520 2/15/2022
3.5.0-beta8 555 2/15/2022
3.5.0-beta7 507 2/14/2022
3.5.0-beta6 576 2/14/2022
3.5.0-beta5 555 2/14/2022
3.5.0-beta4 545 2/14/2022
3.5.0-beta3 536 2/10/2022
3.5.0-beta2 578 2/9/2022
3.5.0-beta10 523 2/16/2022
3.5.0-beta1 525 2/9/2022
3.4.1 1,322 2/13/2022
3.4.0 1,725 2/7/2022
3.4.0-beta2 553 2/6/2022
3.4.0-beta1 532 2/6/2022
3.3.0 1,194 2/5/2022
3.3.0-beta4 576 2/4/2022
3.3.0-beta3 665 2/3/2022
3.3.0-beta2 522 2/3/2022
3.3.0-beta1 583 2/3/2022
3.2.2 1,287 2/2/2022
3.2.1 1,305 2/1/2022
3.2.1-beta1 513 1/30/2022
3.2.0 2,474 1/30/2022
3.2.0-beta6 551 1/30/2022
3.2.0-beta5 489 1/29/2022
3.2.0-beta4 539 1/29/2022
3.2.0-beta3 547 1/28/2022
3.2.0-beta2 571 1/28/2022
3.2.0-beta1 551 1/25/2022
3.1.4 2,829 1/27/2022
3.1.3 1,410 1/26/2022
3.1.3-beta1 572 1/26/2022
3.1.2 1,271 1/25/2022
3.1.1 1,240 1/24/2022
3.1.0 1,179 1/24/2022
3.0.0 1,198 1/22/2022
3.0.0-beta1 540 1/22/2022
2.21.0-beta9 1,430 1/19/2022
2.21.0-beta8 517 1/19/2022
2.21.0-beta7 512 1/18/2022
2.21.0-beta6 499 1/18/2022
2.21.0-beta5 524 1/18/2022
2.21.0-beta4 487 1/18/2022
2.21.0-beta3 543 1/18/2022
2.21.0-beta2 499 1/17/2022
2.21.0-beta15 531 1/21/2022
2.21.0-beta14 518 1/21/2022
2.21.0-beta13 498 1/20/2022
2.21.0-beta12 543 1/20/2022
2.21.0-beta11 489 1/19/2022
2.21.0-beta10 554 1/19/2022
2.21.0-beta1 526 1/16/2022
2.20.0 970 1/16/2022
2.20.0-beta3 509 1/16/2022
2.20.0-beta2 538 1/15/2022
2.20.0-beta1 549 1/15/2022
2.19.2 1,155 1/14/2022
2.19.1 1,055 1/10/2022
2.19.0 978 1/10/2022
2.19.0-beta2 536 1/9/2022
2.19.0-beta1 561 1/6/2022
2.18.1 1,043 1/2/2022
2.18.0 1,002 12/31/2021
2.18.0-beta2 572 12/30/2021
2.18.0-beta1 503 12/30/2021
2.17.0 1,001 12/29/2021
2.17.0-beta2 540 12/28/2021
2.17.0-beta1 544 12/27/2021
2.16.0 1,041 12/25/2021
2.15.0 1,001 12/23/2021
2.15.0-beta2 531 12/22/2021
2.15.0-beta1 531 12/22/2021
2.14.0 967 12/21/2021
2.14.0-beta1 535 12/20/2021
2.13.1 994 12/20/2021
2.13.0 957 12/19/2021
2.12.0 788 12/17/2021
2.12.0-beta2 480 12/16/2021
2.12.0-beta1 541 12/16/2021
2.11.0 823 12/15/2021
2.10.1-beta1 522 12/15/2021
2.10.0 6,368 11/24/2021
2.10.0-beta2 5,432 11/24/2021
2.10.0-beta1 573 11/18/2021
2.9.1 856 11/9/2021
2.9.0 865 11/4/2021
2.9.0-beta3 592 11/1/2021
2.9.0-beta2 626 10/25/2021
2.9.0-beta1 673 10/24/2021
2.8.1 974 10/24/2021
2.8.0 831 10/24/2021
2.8.0-beta1 573 10/23/2021
2.7.1 920 10/23/2021
2.7.0 832 10/23/2021
2.6.0 947 10/21/2021
2.5.1 812 10/20/2021
2.5.0 828 10/20/2021
2.5.0-beta1 609 10/19/2021
2.4.0 823 10/19/2021
2.3.0 807 10/18/2021
2.3.0-beta2 598 10/18/2021
2.2.1 832 10/17/2021
2.2.0 867 10/17/2021
2.1.1 881 10/16/2021
2.1.0 876 10/16/2021
2.1.0-beta5 613 10/16/2021
2.1.0-beta4 638 10/16/2021
2.1.0-beta3 641 10/16/2021
2.1.0-beta2 553 10/15/2021
2.1.0-beta1 559 10/15/2021
2.0.0 867 10/14/2021
1.9.0 886 10/13/2021
1.8.0 815 10/12/2021
1.8.0-beta1 540 10/11/2021
1.7.0 923 10/10/2021
1.6.0 911 10/7/2021
1.6.0-beta5 575 10/6/2021
1.6.0-beta4 577 10/6/2021
1.6.0-beta3 553 10/5/2021
1.6.0-beta2 554 10/5/2021
1.6.0-beta1 569 10/5/2021
1.5.0 831 10/4/2021
1.4.0 870 10/3/2021
1.3.0 823 10/1/2021
1.2.0 844 9/29/2021
1.1.0 857 9/29/2021
1.0.0 7,164 9/28/2021
1.0.0-rc6 561 9/28/2021
1.0.0-rc5 572 9/27/2021
1.0.0-rc4 569 9/27/2021
1.0.0-rc3 638 9/27/2021
1.0.0-rc2 590 9/27/2021
1.0.0-rc1 596 9/27/2021
1.0.0-beta6 579 9/26/2021
1.0.0-beta5 534 9/26/2021
1.0.0-beta4 605 9/26/2021
1.0.0-beta3 591 9/25/2021
1.0.0-beta2 645 9/25/2021

- add SendForbiddenAsync() method
     - add SendUnauthorizedAsync() method
     - add SendFileAsync() method
     - add SendStreamAsync() method
     - add AllowFileUploads() method
     - add model binding support from forms
     - add more overloads for httpclient extensions
     - show log warning if duplicate routes are registered