Suave.DotLiquid 3.7.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Suave.DotLiquid --version 3.7.1
                    
NuGet\Install-Package Suave.DotLiquid -Version 3.7.1
                    
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="Suave.DotLiquid" Version="3.7.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Suave.DotLiquid" Version="3.7.1" />
                    
Directory.Packages.props
<PackageReference Include="Suave.DotLiquid" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Suave.DotLiquid --version 3.7.1
                    
#r "nuget: Suave.DotLiquid, 3.7.1"
                    
#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.
#:package Suave.DotLiquid@3.7.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Suave.DotLiquid&version=3.7.1
                    
Install as a Cake Addin
#tool nuget:?package=Suave.DotLiquid&version=3.7.1
                    
Install as a Cake Tool

Suave.DotLiquid provides Liquid templates for Suave web server.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.7.2 44 10/15/2026
3.7.1 41 10/15/2026
3.7.0 42 10/15/2026
3.6.1 98 10/7/2026
3.6.0 89 10/5/2026
3.5.0 134 9/9/2026
3.4.6 116 8/29/2026
3.4.5 120 8/26/2026
3.4.4 163 7/13/2026
3.2.2 1,025 1/16/2026
3.2.1 1,096 1/10/2026
2.7.0-beta1 290 7/3/2023
2.7.0-beta 300 3/3/2023
2.6.2 3,419 1/26/2022
2.6.1 2,326 5/15/2021
2.6.0 6,036 12/8/2020
2.6.0-beta 678 7/18/2020
2.5.6 5,355 9/7/2019
2.5.5 3,355 6/5/2019
2.5.4 3,655 4/14/2019
Loading failed

Security: a client that opened a connection to an HTTPS binding and never completed the TLS handshake stopped that binding from accepting anyone else (with the default `acceptorCount = 1`, one idle TCP connection made the HTTPS site unreachable until it closed). The handshake now runs on the connection's own task instead of the accept loop, and is bounded by the new process-wide `Tcp.tlsHandshakeTimeout` (default 10 seconds; set it before starting the server). A connection whose handshake fails or times out now has its socket closed; previously the socket was left open
`Proxy.proxy` forwards requests faithfully: the target is built from `rawPath` and `rawQuery` (it used the decoded `path` and dropped the query, so `/a/b%2Fc?x=1` arrived as `/a/b/c`), and a path on the upstream URI is kept as a prefix (`proxy (Uri "http://backend/api")` maps `/users` to `/api/users`). A request path with a `.` or `..` segment (also percent-encoded) is answered with 400 instead of being able to leave that prefix
`Proxy.proxy` forwards every request header except hop-by-hop ones (RFC 9110 §7.6.1: `Connection`, `Keep-Alive`, `Proxy-Connection`, `TE`, `Trailer`, `Transfer-Encoding`, `Upgrade`, `Proxy-Authorization`, `Proxy-Authenticate` and any named in `Connection`), `Host`, `Content-Length` and `Expect`; it used to forward only `User-Agent`, `Accept`, `Date`, `Content-Type` and `Content-Length`, so `Authorization`, `Cookie`, API keys and the like were lost. The request body is forwarded whenever there is one (it was only forwarded for POST and PUT, so PATCH and DELETE lost theirs). `multipart/form-data` bodies are parsed by Suave before any WebPart runs and still cannot be forwarded
`Proxy.proxy` passes any upstream status through with its reason phrase; statuses Suave has no `HttpCode` for (e.g. 207, 418) used to become 502 while the upstream body was still sent. Response headers are forwarded without hop-by-hop headers and without `Date`/`Server` (Suave writes its own), and repeated headers such as `Set-Cookie` are kept as separate headers instead of being joined with commas
Behaviour change:** `Proxy.proxy` no longer trusts `X-Forwarded-For`, `X-Forwarded-Proto`, `X-Forwarded-Host`, `Forwarded` or `X-Real-IP` sent by the client: `X-Forwarded-For` is the connection's address, `-Proto` and `-Host` are the scheme and `Host` the proxy received, and `Forwarded`/`X-Real-IP` are dropped. A client could send `X-Forwarded-Proto: https` over plain HTTP, or any address in `X-Forwarded-For`, and have it passed on. Behind another reverse proxy, list its address in `ProxyOptions.trustedProxies` to keep its headers and extend its `X-Forwarded-For` chain
Security: the `HttpClient` shared by all proxies no longer keeps a cookie container. Upstream `Set-Cookie` responses were stored in it and sent with later proxied requests from every client
Add `Proxy.proxyWith options upstream` and `Proxy.defaultProxyOptions` (`timeout`, `trustedProxies`, `dropRequestHeaders`, `onError`). The proxy answers 504 when the upstream has not sent its response headers within the timeout (30 seconds by default; there was none) and 502 when it cannot be reached; `onError` is called with the exception first. `proxy` and `proxyWith` throw `ArgumentException` straight away for an upstream that is not an absolute http/https URI