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 (108)

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.31.0.13-beta 38 11/21/2024
5.31.0.12-beta 114 11/20/2024
5.31.0.11-beta 67 11/20/2024
5.31.0.10-beta 101 11/19/2024
5.31.0.9-beta 303 11/16/2024
5.31.0.8-beta 205 11/15/2024
5.31.0.7-beta 183 11/14/2024
5.31.0.6-beta 354 11/12/2024
5.31.0.5-beta 185 11/9/2024
5.31.0.4-beta 125 11/7/2024
5.31.0.3-beta 170 11/5/2024
5.31.0.2-beta 111 11/5/2024
5.31.0.1-beta 238 11/5/2024
5.31.0 36,954 11/3/2024
5.30.0.23-beta 209 11/2/2024
5.30.0.22-beta 110 11/1/2024
5.30.0.21-beta 122 10/31/2024
5.30.0.20-beta 96 10/30/2024
5.30.0.19-beta 218 10/29/2024
5.30.0.18-beta 123 10/28/2024
5.30.0.17-beta 106 10/28/2024
5.30.0.16-beta 134 10/26/2024
5.30.0.15-beta 129 10/24/2024
5.30.0.14-beta 185 10/23/2024
5.30.0.13-beta 457 10/18/2024
5.30.0.12-beta 100 10/17/2024
5.30.0.11-beta 278 10/17/2024
5.30.0.10-beta 1,007 10/16/2024
5.30.0.9-beta 168 10/15/2024
5.30.0.8-beta 114 10/14/2024
5.30.0.7-beta 99 10/13/2024
5.30.0.6-beta 384 10/9/2024
5.30.0.5-beta 108 10/9/2024
5.30.0.4-beta 111 10/8/2024
5.30.0.3-beta 115 10/6/2024
5.30.0.2-beta 95 10/5/2024
5.30.0.1-beta 99 10/4/2024
5.30.0 96,241 10/1/2024
5.29.0.13-beta 89 10/1/2024
5.29.0.12-beta 243 9/27/2024
5.29.0.11-beta 356 9/26/2024
5.29.0.10-beta 104 9/25/2024
5.29.0.8-beta 203 9/20/2024
5.29.0.7-beta 135 9/20/2024
5.29.0.6-beta 142 9/19/2024
5.29.0.5-beta 121 9/19/2024
5.29.0.4-beta 137 9/18/2024
5.29.0.3-beta 202 9/17/2024
5.29.0.2-beta 137 9/17/2024
5.29.0.1-beta 474 9/11/2024
5.29.0 99,200 8/31/2024
5.28.0.7-beta 142 8/30/2024
5.28.0.6-beta 1,587 8/16/2024
5.28.0.5-beta 404 8/11/2024
5.28.0.4-beta 152 8/9/2024
5.28.0.3-beta 300 8/6/2024
5.28.0.2-beta 549 8/1/2024
5.28.0.1-beta 122 7/31/2024
5.28.0 123,191 7/31/2024
5.27.0.14-beta 128 7/30/2024
5.27.0.13-beta 603 7/25/2024
5.27.0.12-beta 320 7/18/2024
5.27.0.11-beta 202 7/16/2024
5.27.0.10-beta 172 7/13/2024
5.27.0.9-beta 148 7/12/2024
5.27.0.8-beta 135 7/12/2024
5.27.0.7-beta 130 7/11/2024
5.27.0.6-beta 453 7/10/2024
5.27.0.5-beta 371 7/8/2024
5.27.0.4-beta 157 7/8/2024
5.27.0.3-beta 1,378 7/6/2024
5.27.0.2-beta 156 7/6/2024
5.27.0.1-beta 592 7/4/2024
5.27.0 165,104 7/4/2024
5.26.0.27-beta 149 7/1/2024
5.26.0.26-beta 152 7/1/2024
5.26.0.25-beta 155 6/29/2024
5.26.0.24-beta 716 6/26/2024
5.26.0.23-beta 137 6/26/2024
5.26.0.22-beta 166 6/26/2024
5.26.0.21-beta 140 6/26/2024
5.26.0.20-beta 214 6/24/2024
5.26.0.19-beta 155 6/23/2024
5.26.0.18-beta 153 6/23/2024
5.26.0.17-beta 156 6/23/2024
5.26.0.16-beta 153 6/23/2024
5.26.0.15-beta 204 6/21/2024
5.26.0.14-beta 297 6/20/2024
5.26.0.13-beta 164 6/20/2024
5.26.0.12-beta 178 6/20/2024
5.26.0.11-beta 194 6/19/2024
5.26.0.10-beta 175 6/19/2024
5.26.0.9-beta 296 6/12/2024
5.26.0.8-beta 142 6/12/2024
5.26.0.7-beta 641 6/9/2024
5.26.0.6-beta 141 6/8/2024
5.26.0.5-beta 162 6/8/2024
5.26.0.4-beta 161 6/7/2024
5.26.0.3-beta 330 6/6/2024
5.26.0.2-beta 158 6/4/2024
5.26.0.1-beta 178 6/1/2024
5.26.0 156,000 5/31/2024
5.25.0.15-beta 1,138 5/29/2024
5.25.0.14-beta 249 5/27/2024
5.25.0.13-beta 199 5/24/2024
5.25.0.12-beta 314 5/22/2024
5.25.0.11-beta 153 5/22/2024
5.25.0.10-beta 1,736 5/18/2024
5.25.0.9-beta 456 5/17/2024
5.25.0.8-beta 142 5/17/2024
5.25.0.7-beta 251 5/15/2024
5.25.0.6-beta 124 5/15/2024
5.25.0.5-beta 320 5/11/2024
5.25.0.4-beta 349 5/7/2024
5.25.0.3-beta 564 5/6/2024
5.25.0.2-beta 180 5/5/2024
5.25.0.1-beta 168 5/3/2024
5.25.0 134,389 5/2/2024
5.24.0.12-beta 139 5/2/2024
5.24.0.11-beta 159 5/1/2024
5.24.0.9-beta 203 4/28/2024
5.24.0.8-beta 645 4/25/2024
5.24.0.7-beta 165 4/24/2024
5.24.0.6-beta 146 4/24/2024
5.24.0.5-beta 145 4/23/2024
5.24.0.4-beta 636 4/21/2024
5.24.0.3-beta 183 4/18/2024
5.24.0.2-beta 148 4/18/2024
5.24.0.1-beta 373 4/9/2024
5.24.0 207,412 4/1/2024
5.23.0.15-beta 289 3/28/2024
5.23.0.14-beta 279 3/26/2024
5.23.0.13-beta 373 3/24/2024
5.23.0.12-beta 590 3/22/2024
5.23.0.11-beta 271 3/21/2024
5.23.0.10-beta 384 3/19/2024
5.23.0.9-beta 315 3/15/2024
5.23.0.8-beta 351 3/14/2024
5.23.0.7-beta 246 3/14/2024
5.23.0.6-beta 264 3/13/2024
5.23.0.5-beta 882 3/11/2024
5.23.0.4-beta 1,651 3/8/2024
5.23.0.3-beta 542 3/5/2024
5.23.0.2-beta 427 3/3/2024
5.23.0.1-beta 688 2/29/2024
5.23.0 230,237 2/29/2024
5.22.0.18-beta 353 2/28/2024
5.22.0.17-beta 356 2/27/2024
5.22.0.16-beta 333 2/27/2024
5.22.0.15-beta 398 2/26/2024
5.22.0.14-beta 374 2/26/2024
5.22.0.13-beta 374 2/23/2024
5.22.0.12-beta 794 2/21/2024
5.22.0.11-beta 390 2/21/2024
5.22.0.10-beta 391 2/21/2024
5.22.0.9-beta 398 2/20/2024
5.22.0.8-beta 505 2/18/2024
5.22.0.7-beta 559 2/15/2024
5.22.0.6-beta 417 2/14/2024
5.22.0.5-beta 482 2/12/2024
5.22.0.4-beta 440 2/12/2024
5.22.0.3-beta 404 2/12/2024
5.22.0.2-beta 464 2/8/2024
5.22.0.1-beta 460 2/8/2024
5.22.0 136,824 2/1/2024
5.21.2.20-beta 405 1/31/2024
5.21.2.19-beta 453 1/30/2024
5.21.2.18-beta 517 1/27/2024
5.21.2.17-beta 507 1/26/2024
5.21.2.16-beta 2,306 1/21/2024
5.21.2.15-beta 507 1/18/2024
5.21.2.14-beta 579 1/17/2024
5.21.2.13-beta 483 1/16/2024
5.21.2.12-beta 497 1/15/2024
5.21.2.11-beta 468 1/13/2024
5.21.2.10-beta 518 1/12/2024
5.21.2.9-beta 524 1/11/2024
5.21.2.8-beta 507 1/10/2024
5.21.2.7-beta 499 1/10/2024
5.21.2.6-beta 547 1/9/2024
5.21.2.5-beta 587 1/9/2024
5.21.2.4-beta 565 1/7/2024
5.21.2.3-beta 511 1/6/2024
5.21.2.2-beta 536 1/4/2024
5.21.2.1-beta 493 1/4/2024
5.21.2 178,589 1/2/2024
5.21.1.1-beta 489 1/2/2024
5.21.1 810 1/2/2024
5.21.0 3,844 1/2/2024
5.20.1.12-beta 580 12/30/2023
5.20.1.11-beta 500 12/30/2023
5.20.1.10-beta 513 12/29/2023
5.20.1.9-beta 537 12/29/2023
5.20.1.8-beta 577 12/27/2023
5.20.1.7-beta 3,703 12/18/2023
5.20.1.6-beta 609 12/15/2023
5.20.1.5-beta 667 12/13/2023
5.20.1.4-beta 465 12/12/2023
5.20.1.3-beta 563 12/9/2023
5.20.1.2-beta 542 12/8/2023
5.20.1.1-beta 790 12/7/2023
5.20.1 81,533 12/1/2023
5.20.0.2-beta 552 11/30/2023
5.20.0.1-beta 501 11/30/2023
5.20.0 34,143 11/28/2023
5.20.0-rc2 2,055 11/26/2023
5.20.0-rc1 2,048 11/18/2023
5.19.2 60,246 11/7/2023
5.19.1 12,667 11/4/2023
5.19.0.13-beta 578 11/15/2023
5.19.0.12-beta 509 11/15/2023
5.19.0.11-beta 514 11/15/2023
5.19.0.10-beta 538 11/9/2023
5.19.0.9-beta 495 11/7/2023
5.19.0.8-beta 467 11/6/2023
5.19.0.7-beta 527 11/4/2023
5.19.0.6-beta 489 11/3/2023
5.19.0.5-beta 506 11/2/2023
5.19.0.4-beta 510 11/2/2023
5.19.0.3-beta 532 11/1/2023
5.19.0.2-beta 498 10/31/2023
5.19.0.1-beta 491 10/29/2023
5.19.0 15,049 10/29/2023
5.18.0.9-beta 513 10/27/2023
5.18.0.8-beta 619 10/25/2023
5.18.0.7-beta 554 10/24/2023
5.18.0.6-beta 581 10/19/2023
5.18.0.5-beta 1,051 10/14/2023
5.18.0.4-beta 530 10/12/2023
5.18.0.3-beta 488 10/12/2023
5.18.0.2-beta 552 10/11/2023
5.18.0.1-beta 623 10/5/2023
5.18.0 96,821 10/1/2023
5.17.1.32-beta 508 10/1/2023
5.17.1.31-beta 542 9/29/2023
5.17.1.30-beta 493 9/29/2023
5.17.1.29-beta 932 9/28/2023
5.17.1.28-beta 506 9/27/2023
5.17.1.27-beta 524 9/27/2023
5.17.1.26-beta 495 9/27/2023
5.17.1.25-beta 554 9/26/2023
5.17.1.24-beta 517 9/24/2023
5.17.1.23-beta 486 9/23/2023
5.17.1.22-beta 481 9/23/2023
5.17.1.21-beta 486 9/22/2023
5.17.1.20-beta 495 9/21/2023
5.17.1.19-beta 1,048 9/13/2023
5.17.1.18-beta 516 9/12/2023
5.17.1.17-beta 530 9/12/2023
5.17.1.16-beta 502 9/11/2023
5.17.1.15-beta 535 9/10/2023
5.17.1.14-beta 504 9/9/2023
5.17.1.13-beta 520 9/8/2023
5.17.1.12-beta 479 9/8/2023
5.17.1.11-beta 532 9/8/2023
5.17.1.10-beta 475 9/8/2023
5.17.1.9-beta 481 9/8/2023
5.17.1.8-beta 544 9/7/2023
5.17.1.7-beta 526 9/7/2023
5.17.1.6-beta 1,029 9/7/2023
5.17.1.5-beta 551 9/6/2023
5.17.1.4-beta 460 9/6/2023
5.17.1.3-beta 555 9/6/2023
5.17.1.2-beta 533 9/5/2023
5.17.1.1 40,551 9/5/2023
5.17.1 2,464 9/4/2023
5.17.0.2-beta 480 9/4/2023
5.17.0.1-beta 521 9/4/2023
5.17.0 1,455 9/3/2023
5.16.0.4-beta 510 9/3/2023
5.16.0.3-beta 551 9/2/2023
5.16.0.2-beta 509 8/31/2023
5.16.0.1-beta 532 8/30/2023
5.16.0 25,009 8/30/2023
5.15.0.22-beta 681 8/26/2023
5.15.0.21-beta 564 8/24/2023
5.15.0.20-beta 899 8/23/2023
5.15.0.19-beta 499 8/23/2023
5.15.0.18-beta 547 8/18/2023
5.15.0.17-beta 877 8/16/2023
5.15.0.16-beta 586 8/14/2023
5.15.0.15-beta 487 8/14/2023
5.15.0.14-beta 529 8/13/2023
5.15.0.12-beta 494 8/11/2023
5.15.0.11-beta 622 8/10/2023
5.15.0.9-beta 511 8/10/2023
5.15.0.8-beta 500 8/10/2023
5.15.0.7-beta 493 8/10/2023
5.15.0.6-beta 522 8/10/2023
5.15.0.5-beta 499 8/9/2023
5.15.0.4-beta 558 8/9/2023
5.15.0.3-beta 514 8/8/2023
5.15.0.2-beta 3,278 8/4/2023
5.15.0.1-beta 641 8/4/2023
5.15.0 93,493 8/1/2023
5.14.0.7-beta 557 7/31/2023
5.14.0.6-beta 530 7/30/2023
5.14.0.5-beta 554 7/29/2023
5.14.0.4-beta 493 7/28/2023
5.14.0.3-beta 569 7/28/2023
5.14.0.2-beta 568 7/26/2023
5.14.0.1-beta 826 7/20/2023
5.14.0 37,436 7/16/2023
5.13.0.9-beta 511 7/14/2023
5.13.0.8-beta 544 7/12/2023
5.13.0.7-beta 539 7/11/2023
5.13.0.6-beta 481 7/11/2023
5.13.0.5-beta 501 7/10/2023
5.13.0.4-beta 534 7/8/2023
5.13.0.3-beta 547 7/7/2023
5.13.0.2-beta 549 7/6/2023
5.13.0.1-beta 538 6/27/2023
5.13.0 56,964 6/24/2023
5.12.0.4-beta 509 6/23/2023
5.12.0.3-beta 595 6/19/2023
5.12.0.2-beta 530 6/18/2023
5.12.0.1-beta 754 6/14/2023
5.12.0 29,382 6/11/2023
5.11.0.6-beta 523 6/10/2023
5.11.0.5-beta 534 6/9/2023
5.11.0.4-beta 578 6/8/2023
5.11.0.3-beta 620 6/6/2023
5.11.0.2-beta 609 5/31/2023
5.11.0.1-beta 524 5/30/2023
5.11.0 37,113 5/27/2023
5.10.0.5-beta 542 5/24/2023
5.10.0.4-beta 549 5/22/2023
5.10.0.3-beta 863 5/7/2023
5.10.0.2-beta 517 5/6/2023
5.10.0.1-beta 581 5/3/2023
5.10.0 96,842 4/30/2023
5.9.0.4-beta 539 4/29/2023
5.9.0.3-beta 529 4/29/2023
5.9.0.2-beta 1,181 4/25/2023
5.9.0.1-beta 563 4/24/2023
5.9.0 62,723 4/22/2023
5.8.1.15-beta 523 4/21/2023
5.8.1.14-beta 565 4/21/2023
5.8.1.13-beta 573 4/20/2023
5.8.1.12-beta 485 4/20/2023
5.8.1.11-beta 525 4/20/2023
5.8.1.10-beta 517 4/19/2023
5.8.1.9-beta 567 4/18/2023
5.8.1.8-beta 768 4/16/2023
5.8.1.7-beta 616 4/10/2023
5.8.1.6-beta 501 4/8/2023
5.8.1.5-beta 511 4/8/2023
5.8.1.4-beta 488 4/7/2023
5.8.1.3-beta 629 3/30/2023
5.8.1.2-beta 693 3/30/2023
5.8.1.1-beta 690 3/29/2023
5.8.1 63,761 3/24/2023
5.8.0.8-beta 535 3/23/2023
5.8.0.7-beta 519 3/23/2023
5.8.0.6-beta 547 3/20/2023
5.8.0.5-beta 546 3/17/2023
5.8.0.4-beta 533 3/17/2023
5.8.0.3-beta 598 3/13/2023
5.8.0.2-beta 714 3/8/2023
5.8.0.1-beta 539 3/6/2023
5.8.0 39,976 3/5/2023
5.7.2.14-beta 554 3/4/2023
5.7.2.13-beta 604 3/2/2023
5.7.2.12-beta 1,494 3/2/2023
5.7.2.11-beta 504 3/2/2023
5.7.2.10-beta 592 3/1/2023
5.7.2.9-beta 585 2/28/2023
5.7.2.8-beta 558 2/28/2023
5.7.2.7-beta 500 2/28/2023
5.7.2.6-beta 517 2/27/2023
5.7.2.5-beta 535 2/26/2023
5.7.2.4-beta 626 2/24/2023
5.7.2.3-beta 543 2/23/2023
5.7.2.2-beta 539 2/22/2023
5.7.2.1-beta 594 2/19/2023
5.7.2 77,669 2/14/2023
5.7.1.1-beta 544 2/13/2023
5.7.1 15,422 2/9/2023
5.7.0.4-beta 753 2/6/2023
5.7.0.3-beta 533 2/6/2023
5.7.0.2-beta 732 2/3/2023
5.7.0.1-beta 572 1/31/2023
5.7.0 26,308 1/29/2023
5.6.0.6-beta 575 1/28/2023
5.6.0.5-beta 670 1/26/2023
5.6.0.4-beta 582 1/25/2023
5.6.0.3-beta 803 1/18/2023
5.6.0.2-beta 501 1/18/2023
5.6.0.1-beta 597 1/17/2023
5.6.0 95,233 1/2/2023
5.5.0.5-beta 1,276 12/19/2022
5.5.0.4-beta 561 12/17/2022
5.5.0.3-beta 889 12/12/2022
5.5.0.2-beta 527 12/12/2022
5.5.0.1-beta 528 12/10/2022
5.5.0 48,239 12/9/2022
5.4.1.7-beta 556 12/7/2022
5.4.1.6-beta 1,017 11/26/2022
5.4.1.5-beta 535 11/25/2022
5.4.1.4-beta 638 11/21/2022
5.4.1.3-beta 543 11/19/2022
5.4.1.2-beta 545 11/19/2022
5.4.1.1-beta 565 11/18/2022
5.4.1 64,057 11/18/2022
5.4.0.2-beta 509 11/17/2022
5.4.0.1-beta 1,046 11/10/2022
5.4.0 12,936 11/9/2022
5.3.2.13-beta 519 11/9/2022
5.3.2.12-beta 523 11/8/2022
5.3.2.11-beta 612 11/8/2022
5.3.2.10-beta 503 11/8/2022
5.3.2.9-beta 536 11/7/2022
5.3.2.8-beta 499 11/7/2022
5.3.2.7-beta 519 11/7/2022
5.3.2.6-beta 495 11/7/2022
5.3.2.5-beta 530 11/7/2022
5.3.2.4-beta 533 11/6/2022
5.3.2.3-beta 495 11/6/2022
5.3.2.2-beta 511 11/5/2022
5.3.2.1-beta 518 11/4/2022
5.3.2 34,106 11/4/2022
5.3.1.5-beta 495 11/3/2022
5.3.1.4-beta 529 11/3/2022
5.3.1.3-beta 525 11/2/2022
5.3.1.2-beta 509 11/2/2022
5.3.1.1-beta 478 11/2/2022
5.3.1 10,552 10/31/2022
5.3.0.1-beta 534 10/30/2022
5.3.0 1,273 10/29/2022
5.3.0-beta 530 10/28/2022
5.2.1.17-beta 529 10/28/2022
5.2.1.16-beta 613 10/26/2022
5.2.1.15-beta 487 10/26/2022
5.2.1.14-beta 540 10/26/2022
5.2.1.13-beta 575 10/25/2022
5.2.1.12-beta 547 10/25/2022
5.2.1.11-beta 507 10/25/2022
5.2.1.10-beta 534 10/24/2022
5.2.1.9-beta 606 10/21/2022
5.2.1.8-beta 554 10/20/2022
5.2.1.7-beta 1,552 10/19/2022
5.2.1.6-beta 585 10/19/2022
5.2.1.5-beta 825 10/18/2022
5.2.1.4-beta 524 10/17/2022
5.2.1.3-beta 501 10/17/2022
5.2.1.2-beta 529 10/16/2022
5.2.1.1-beta 538 10/15/2022
5.2.1 23,044 10/15/2022
5.2.0.2-beta 476 10/15/2022
5.2.0.1-beta 543 10/14/2022
5.2.0 2,520 10/13/2022
5.2.0-beta9 987 9/16/2022
5.2.0-beta8 588 9/16/2022
5.2.0-beta7 612 9/14/2022
5.2.0-beta6 601 9/14/2022
5.2.0-beta5 573 9/14/2022
5.2.0-beta4 547 9/13/2022
5.2.0-beta3 545 9/12/2022
5.2.0-beta28 588 10/13/2022
5.2.0-beta27 570 10/12/2022
5.2.0-beta26 501 10/9/2022
5.2.0-beta25 502 10/6/2022
5.2.0-beta24 532 10/6/2022
5.2.0-beta23 500 10/5/2022
5.2.0-beta22 509 9/30/2022
5.2.0-beta21 553 9/27/2022
5.2.0-beta20 555 9/26/2022
5.2.0-beta2 632 9/10/2022
5.2.0-beta19 549 9/25/2022
5.2.0-beta18 544 9/25/2022
5.2.0-beta17 525 9/23/2022
5.2.0-beta16 511 9/22/2022
5.2.0-beta15 615 9/20/2022
5.2.0-beta14 514 9/20/2022
5.2.0-beta13 558 9/19/2022
5.2.0-beta12 573 9/19/2022
5.2.0-beta11 552 9/17/2022
5.2.0-beta10 544 9/16/2022
5.2.0-beta1 529 9/10/2022
5.1.1-beta5 595 9/10/2022
5.1.1-beta4 549 9/9/2022
5.1.1-beta3 524 9/9/2022
5.1.1-beta2 500 9/9/2022
5.1.1-beta1 498 9/8/2022
5.1.0 34,482 9/8/2022
5.1.0-beta9 736 8/31/2022
5.1.0-beta8 517 8/29/2022
5.1.0-beta7 522 8/29/2022
5.1.0-beta6 549 8/28/2022
5.1.0-beta5 491 8/27/2022
5.1.0-beta4 508 8/27/2022
5.1.0-beta3 587 8/26/2022
5.1.0-beta2 518 8/25/2022
5.1.0-beta17 530 9/7/2022
5.1.0-beta16 500 9/7/2022
5.1.0-beta15 1,066 9/5/2022
5.1.0-beta14 501 9/4/2022
5.1.0-beta13 531 9/2/2022
5.1.0-beta12 507 9/1/2022
5.1.0-beta11 546 9/1/2022
5.1.0-beta10 478 8/31/2022
5.1.0-beta1 512 8/25/2022
5.0.0 22,558 8/24/2022
5.0.0-beta9 613 8/21/2022
5.0.0-beta8 515 8/20/2022
5.0.0-beta7 511 8/20/2022
5.0.0-beta6 607 8/18/2022
5.0.0-beta5 672 8/17/2022
5.0.0-beta4 499 8/17/2022
5.0.0-beta3 520 8/16/2022
5.0.0-beta2 554 8/15/2022
5.0.0-beta13 466 8/23/2022
5.0.0-beta12 596 8/23/2022
5.0.0-beta11 622 8/22/2022
5.0.0-beta10 496 8/22/2022
5.0.0-beta1 514 8/15/2022
4.5.0-beta9 1,044 8/13/2022
4.5.0-beta8 584 8/12/2022
4.5.0-beta7 645 8/11/2022
4.5.0-beta6 707 8/9/2022
4.5.0-beta5 492 8/8/2022
4.5.0-beta4 596 8/8/2022
4.5.0-beta3 512 8/8/2022
4.5.0-beta2 543 8/8/2022
4.5.0-beta15 535 8/15/2022
4.5.0-beta14 542 8/14/2022
4.5.0-beta13 535 8/14/2022
4.5.0-beta12 513 8/14/2022
4.5.0-beta11 512 8/14/2022
4.5.0-beta10 500 8/13/2022
4.5.0-beta1 554 8/4/2022
4.4.0 29,378 8/3/2022
4.4.0-beta9 521 8/2/2022
4.4.0-beta8 523 7/31/2022
4.4.0-beta7 515 7/28/2022
4.4.0-beta6 590 7/24/2022
4.4.0-beta5 549 7/24/2022
4.4.0-beta4 535 7/23/2022
4.4.0-beta3 546 7/22/2022
4.4.0-beta2 534 7/22/2022
4.4.0-beta1 554 7/20/2022
4.3.2-beta1 634 7/13/2022
4.3.1 23,274 7/13/2022
4.3.1-beta5 732 7/10/2022
4.3.1-beta4 695 7/3/2022
4.3.1-beta3 526 7/2/2022
4.3.1-beta2 1,445 7/2/2022
4.3.1-beta1 588 6/30/2022
4.3.0 72,705 6/17/2022
4.3.0-beta9 1,103 5/30/2022
4.3.0-beta8 536 5/29/2022
4.3.0-beta7 647 5/27/2022
4.3.0-beta6 626 5/25/2022
4.3.0-beta5 591 5/24/2022
4.3.0-beta4 537 5/24/2022
4.3.0-beta3 504 5/23/2022
4.3.0-beta2 597 5/21/2022
4.3.0-beta11 515 6/3/2022
4.3.0-beta10 494 5/31/2022
4.3.0-beta1 553 5/20/2022
4.2.1-beta2 517 5/19/2022
4.2.1-beta1 510 5/19/2022
4.2.0 13,911 5/19/2022
4.2.0-beta9 741 5/13/2022
4.2.0-beta8 523 5/13/2022
4.2.0-beta7 566 5/11/2022
4.2.0-beta6 546 5/11/2022
4.2.0-beta5 542 5/10/2022
4.2.0-beta4 538 5/9/2022
4.2.0-beta3 566 5/7/2022
4.2.0-beta2 533 5/6/2022
4.2.0-beta10 521 5/18/2022
4.2.0-beta1 651 4/28/2022
4.1.0 13,755 4/26/2022
4.1.0-beta8 8,155 4/26/2022
4.1.0-beta7 550 4/26/2022
4.1.0-beta6 510 4/24/2022
4.1.0-beta5 489 4/23/2022
4.1.0-beta4 630 4/10/2022
4.1.0-beta3 552 4/6/2022
4.1.0-beta2 786 4/2/2022
4.1.0-beta1 583 3/31/2022
4.0.0 42,375 3/30/2022
4.0.0-beta6 612 3/26/2022
4.0.0-beta5 580 3/24/2022
4.0.0-beta4 545 3/23/2022
4.0.0-beta3 566 3/22/2022
4.0.0-beta2 549 3/22/2022
4.0.0-beta1 509 3/22/2022
3.12.1-beta2 541 3/22/2022
3.12.1-beta1 521 3/21/2022
3.11.0 7,958 3/21/2022
3.11.0-beta9 555 3/17/2022
3.11.0-beta8 504 3/16/2022
3.11.0-beta7 550 3/15/2022
3.11.0-beta6 549 3/14/2022
3.11.0-beta5 522 3/14/2022
3.11.0-beta4 537 3/14/2022
3.11.0-beta3 526 3/13/2022
3.11.0-beta2 526 3/13/2022
3.11.0-beta12 547 3/18/2022
3.11.0-beta11 677 3/17/2022
3.11.0-beta10 509 3/17/2022
3.11.0-beta1 546 3/10/2022
3.10.0 4,693 3/10/2022
3.10.0-beta7 541 3/9/2022
3.10.0-beta6 538 3/9/2022
3.10.0-beta5 564 3/8/2022
3.10.0-beta4 540 3/8/2022
3.10.0-beta3 507 3/8/2022
3.10.0-beta2 592 3/5/2022
3.10.0-beta1 526 3/5/2022
3.9.1 1,716 3/4/2022
3.9.0-beta9 544 3/2/2022
3.9.0-beta8 545 3/1/2022
3.9.0-beta7 519 3/1/2022
3.9.0-beta6 510 3/1/2022
3.9.0-beta5 517 3/1/2022
3.9.0-beta4 512 3/1/2022
3.9.0-beta3 530 2/28/2022
3.9.0-beta2 515 2/28/2022
3.9.0-beta13 525 3/4/2022
3.9.0-beta12 556 3/4/2022
3.9.0-beta11 558 3/3/2022
3.9.0-beta10 511 3/2/2022
3.9.0-beta1 537 2/27/2022
3.8.1 3,287 2/27/2022
3.8.0 1,424 2/26/2022
3.7.1-beta2 567 2/25/2022
3.7.1-beta1 483 2/25/2022
3.7.0 1,315 2/25/2022
3.6.0 1,468 2/23/2022
3.6.0-beta8 543 2/23/2022
3.6.0-beta7 518 2/23/2022
3.6.0-beta6 541 2/23/2022
3.6.0-beta5 527 2/22/2022
3.6.0-beta4 549 2/22/2022
3.6.0-beta3 530 2/21/2022
3.6.0-beta2 523 2/21/2022
3.6.0-beta1 545 2/19/2022
3.5.1 1,285 2/19/2022
3.5.1-beta4 537 2/18/2022
3.5.1-beta3 533 2/18/2022
3.5.1-beta2 556 2/18/2022
3.5.1-beta1 546 2/18/2022
3.5.0 1,353 2/16/2022
3.5.0-beta9 517 2/15/2022
3.5.0-beta8 552 2/15/2022
3.5.0-beta7 500 2/14/2022
3.5.0-beta6 573 2/14/2022
3.5.0-beta5 552 2/14/2022
3.5.0-beta4 539 2/14/2022
3.5.0-beta3 533 2/10/2022
3.5.0-beta2 575 2/9/2022
3.5.0-beta10 520 2/16/2022
3.5.0-beta1 522 2/9/2022
3.4.1 1,317 2/13/2022
3.4.0 1,720 2/7/2022
3.4.0-beta2 550 2/6/2022
3.4.0-beta1 529 2/6/2022
3.3.0 1,189 2/5/2022
3.3.0-beta4 573 2/4/2022
3.3.0-beta3 662 2/3/2022
3.3.0-beta2 519 2/3/2022
3.3.0-beta1 578 2/3/2022
3.2.2 1,282 2/2/2022
3.2.1 1,300 2/1/2022
3.2.1-beta1 510 1/30/2022
3.2.0 2,457 1/30/2022
3.2.0-beta6 548 1/30/2022
3.2.0-beta5 486 1/29/2022
3.2.0-beta4 536 1/29/2022
3.2.0-beta3 544 1/28/2022
3.2.0-beta2 566 1/28/2022
3.2.0-beta1 548 1/25/2022
3.1.4 2,788 1/27/2022
3.1.3 1,404 1/26/2022
3.1.3-beta1 567 1/26/2022
3.1.2 1,266 1/25/2022
3.1.1 1,235 1/24/2022
3.1.0 1,174 1/24/2022
3.0.0 1,192 1/22/2022
3.0.0-beta1 537 1/22/2022
2.21.0-beta9 1,425 1/19/2022
2.21.0-beta8 514 1/19/2022
2.21.0-beta7 509 1/18/2022
2.21.0-beta6 494 1/18/2022
2.21.0-beta5 521 1/18/2022
2.21.0-beta4 484 1/18/2022
2.21.0-beta3 538 1/18/2022
2.21.0-beta2 496 1/17/2022
2.21.0-beta15 528 1/21/2022
2.21.0-beta14 515 1/21/2022
2.21.0-beta13 494 1/20/2022
2.21.0-beta12 540 1/20/2022
2.21.0-beta11 486 1/19/2022
2.21.0-beta10 551 1/19/2022
2.21.0-beta1 522 1/16/2022
2.20.0 963 1/16/2022
2.20.0-beta3 504 1/16/2022
2.20.0-beta2 533 1/15/2022
2.20.0-beta1 546 1/15/2022
2.19.2 1,146 1/14/2022
2.19.1 1,050 1/10/2022
2.19.0 972 1/10/2022
2.19.0-beta2 533 1/9/2022
2.19.0-beta1 557 1/6/2022
2.18.1 1,038 1/2/2022
2.18.0 997 12/31/2021
2.18.0-beta2 568 12/30/2021
2.18.0-beta1 499 12/30/2021
2.17.0 996 12/29/2021
2.17.0-beta2 536 12/28/2021
2.17.0-beta1 541 12/27/2021
2.16.0 1,034 12/25/2021
2.15.0 996 12/23/2021
2.15.0-beta2 528 12/22/2021
2.15.0-beta1 528 12/22/2021
2.14.0 962 12/21/2021
2.14.0-beta1 528 12/20/2021
2.13.1 989 12/20/2021
2.13.0 952 12/19/2021
2.12.0 779 12/17/2021
2.12.0-beta2 477 12/16/2021
2.12.0-beta1 533 12/16/2021
2.11.0 796 12/15/2021
2.10.1-beta1 519 12/15/2021
2.10.0 6,362 11/24/2021
2.10.0-beta2 5,429 11/24/2021
2.10.0-beta1 570 11/18/2021
2.9.1 851 11/9/2021
2.9.0 860 11/4/2021
2.9.0-beta3 589 11/1/2021
2.9.0-beta2 623 10/25/2021
2.9.0-beta1 670 10/24/2021
2.8.1 969 10/24/2021
2.8.0 826 10/24/2021
2.8.0-beta1 570 10/23/2021
2.7.1 914 10/23/2021
2.7.0 827 10/23/2021
2.6.0 940 10/21/2021
2.5.1 807 10/20/2021
2.5.0 822 10/20/2021
2.5.0-beta1 606 10/19/2021
2.4.0 818 10/19/2021
2.3.0 802 10/18/2021
2.3.0-beta2 595 10/18/2021
2.2.1 827 10/17/2021
2.2.0 862 10/17/2021
2.1.1 876 10/16/2021
2.1.0 869 10/16/2021
2.1.0-beta5 610 10/16/2021
2.1.0-beta4 635 10/16/2021
2.1.0-beta3 638 10/16/2021
2.1.0-beta2 549 10/15/2021
2.1.0-beta1 555 10/15/2021
2.0.0 862 10/14/2021
1.9.0 881 10/13/2021
1.8.0 810 10/12/2021
1.8.0-beta1 537 10/11/2021
1.7.0 917 10/10/2021
1.6.0 906 10/7/2021
1.6.0-beta5 571 10/6/2021
1.6.0-beta4 574 10/6/2021
1.6.0-beta3 550 10/5/2021
1.6.0-beta2 551 10/5/2021
1.6.0-beta1 566 10/5/2021
1.5.0 824 10/4/2021
1.4.0 865 10/3/2021
1.3.0 818 10/1/2021
1.2.0 825 9/29/2021
1.1.0 850 9/29/2021
1.0.0 6,488 9/28/2021
1.0.0-rc6 558 9/28/2021
1.0.0-rc5 569 9/27/2021
1.0.0-rc4 566 9/27/2021
1.0.0-rc3 635 9/27/2021
1.0.0-rc2 587 9/27/2021
1.0.0-rc1 593 9/27/2021
1.0.0-beta6 576 9/26/2021
1.0.0-beta5 531 9/26/2021
1.0.0-beta4 602 9/26/2021
1.0.0-beta3 586 9/25/2021
1.0.0-beta2 642 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