FclEx.Http
2.3.8
See the version list below for details.
dotnet add package FclEx.Http --version 2.3.8
NuGet\Install-Package FclEx.Http -Version 2.3.8
<PackageReference Include="FclEx.Http" Version="2.3.8" />
<PackageVersion Include="FclEx.Http" Version="2.3.8" />
<PackageReference Include="FclEx.Http" />
paket add FclEx.Http --version 2.3.8
#r "nuget: FclEx.Http, 2.3.8"
#:package FclEx.Http@2.3.8
#addin nuget:?package=FclEx.Http&version=2.3.8
#tool nuget:?package=FclEx.Http&version=2.3.8
FclEx.Http
HTTP, HTML, cookie, authentication, and web-client helpers for FclEx.
What Is Included
HttpService,HttpClientOptions, request handlers, retry helpers, and download/upload utilities.- HTTP action abstractions for JSON, JSONP, XML, HTML, and HTML file workflows.
- AngleSharp helpers for parsing and querying HTML documents.
- Cookie parsing and simple cookie models.
- OAuth client-credentials token provider and authentication handler.
- MIME type lookup helpers.
- User-client abstractions for authenticated web clients and session-aware workflows.
- Form data models and helpers for web form submission.
- Source-generated
HttpClientBuilderhelper overloads.
Usage Notes
- The action types wrap HTTP responses into
OperationResult<T>. - When implementing custom actions, keep parsing and validation errors inside the action pipeline so callers can handle them consistently.
- ASP.NET Core server-side helpers live in
FclEx.AspNetCore.
Named Access Token Providers
Register a client-credentials provider for each authority and client identity. The overload without a name registers the default provider under the empty name.
services.AddHttpClient(nameof(ClientCredentialsTokenProvider));
services.AddClientCredentialsTokenProvider("captcha-a", options =>
{
options.Authority = authA.Authority;
options.ClientId = authA.ClientId;
options.ClientSecret = authA.ClientSecret;
});
services.AddClientCredentialsTokenProvider("captcha-b", options =>
{
options.Authority = authB.Authority;
options.ClientId = authB.ClientId;
options.ClientSecret = authB.ClientSecret;
});
services.AddHttpClient("captcha-api-a")
.AddAuthenticationHandler("captcha-a", ["captcha.read"]);
services.AddHttpClient("captcha-api-b")
.AddAuthenticationHandler("captcha-b", ["captcha.read"]);
The name passed to AddAuthenticationHandler selects the token provider; it is independent of the HttpClient name. Multiple clients can share a provider name, and their handlers can request different scopes. Each provider instance retains its discovery-document and access-token caches for the lifetime of the service provider. Re-registering a name replaces that name's previous provider factory or client-credentials configuration; registrations are not merged. The handler overload without a provider name selects the default provider.
Client-credentials providers send discovery and token requests through the HTTP client named ClientCredentialsTokenProvider. Configure that named client if those requests need custom transport settings such as a proxy or timeout.
HTML Context Lifetime
Use HtmlActionContext.Document to access the parsed document; Element is obsolete and can be replaced with Document.DocumentElement.
The default HTML action pipeline disposes the context after result conversion, including error and exception paths. Materialize values during GetResult; do not return document nodes or deferred queries over them.
When constructing a context or calling CreateContext directly, dispose each successfully created context after use. Context copies share the same document.
CSS selectors are evaluated against the document, so selectors such as html and :root can select the root element.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- AngleSharp (>= 1.8.2)
- Duende.IdentityModel (>= 8.1.0)
- FclEx.Logging (>= 2.3.8)
- Microsoft.Extensions.Http.Polly (>= 10.0.12)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.23.0)
- StandardSocketsHttpHandler (>= 2.2.0.10)
-
.NETStandard 2.0
- AngleSharp (>= 1.8.2)
- Duende.IdentityModel (>= 8.1.0)
- FclEx.Logging (>= 2.3.8)
- Microsoft.Extensions.Http.Polly (>= 10.0.12)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.23.0)
- StandardSocketsHttpHandler (>= 2.2.0.10)
-
net10.0
- AngleSharp (>= 1.8.2)
- Duende.IdentityModel (>= 8.1.0)
- FclEx.Logging (>= 2.3.8)
- Microsoft.Extensions.Http.Polly (>= 10.0.12)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.23.0)
-
net8.0
- AngleSharp (>= 1.8.2)
- Duende.IdentityModel (>= 8.1.0)
- FclEx.Logging (>= 2.3.8)
- Microsoft.Extensions.Http.Polly (>= 10.0.12)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.23.0)
-
net9.0
- AngleSharp (>= 1.8.2)
- Duende.IdentityModel (>= 8.1.0)
- FclEx.Logging (>= 2.3.8)
- Microsoft.Extensions.Http.Polly (>= 10.0.12)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.23.0)
NuGet packages (9)
Showing the top 5 NuGet packages that depend on FclEx.Http:
| Package | Downloads |
|---|---|
|
FclEx.Serilog
Serilog configuration helpers, enrichers, filters, formatters, and sinks. |
|
|
FclEx.AspNetCore
ASP.NET Core helpers for requests, sessions, model state, endpoints, authorization, request buffering, decompression, and logging context. |
|
|
AbpEx.Core
Extensions for abp(https://github.com/abpframework/abp) |
|
|
FclEx.Slack
SlackNet registration, Slack API extensions, message builders, webhook helpers, and table-to-message formatting. |
|
|
FclEx.AspNetCore.Testing
Integration-test helpers built around WebApplicationFactory, test content roots, and selective external HTTP forwarding. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.4.2 | 353 | 10/10/2026 |
| 2.4.1 | 290 | 10/8/2026 |
| 2.4.0 | 332 | 10/3/2026 |
| 2.3.9 | 323 | 9/27/2026 |
| 2.3.8 | 311 | 9/26/2026 |
| 2.3.7 | 315 | 9/24/2026 |
| 2.3.6 | 335 | 9/22/2026 |
| 2.3.5 | 322 | 9/22/2026 |
| 2.3.4 | 355 | 8/28/2026 |
| 2.3.3 | 402 | 8/22/2026 |
| 2.3.2 | 362 | 8/20/2026 |
| 2.3.1 | 360 | 8/19/2026 |
| 2.3.0 | 357 | 8/17/2026 |
| 2.2.9 | 420 | 7/18/2026 |
| 2.2.8 | 415 | 6/13/2026 |
| 2.2.6 | 359 | 6/8/2026 |
| 2.2.5 | 363 | 6/5/2026 |
| 2.2.4 | 365 | 6/5/2026 |
| 2.2.3 | 385 | 5/27/2026 |
| 2.2.2 | 352 | 5/26/2026 |