Quartz.Dashboard.Agent
4.5.0
Prefix Reserved
dotnet add package Quartz.Dashboard.Agent --version 4.5.0
NuGet\Install-Package Quartz.Dashboard.Agent -Version 4.5.0
<PackageReference Include="Quartz.Dashboard.Agent" Version="4.5.0" />
<PackageVersion Include="Quartz.Dashboard.Agent" Version="4.5.0" />
<PackageReference Include="Quartz.Dashboard.Agent" />
paket add Quartz.Dashboard.Agent --version 4.5.0
#r "nuget: Quartz.Dashboard.Agent, 4.5.0"
#:package Quartz.Dashboard.Agent@4.5.0
#addin nuget:?package=Quartz.Dashboard.Agent&version=4.5.0
#tool nuget:?package=Quartz.Dashboard.Agent&version=4.5.0
Quartz.Dashboard.Agent
Quartz.Dashboard.Agent puts a scheduler on a Quartz dashboard running somewhere else, over one outbound connection the scheduler opens itself. The dashboard shows and drives it — every page, every action, the history and the live events — without an inbound port on the worker, a plugin that serves HTTP, or a shared database.
Installation
dotnet add package Quartz.Dashboard.Agent
The dashboard has to accept agents: AddQuartzDashboard(options => options.AcceptAgents(…)) in the
dashboard's application, which maps the agent hub at {DashboardPath}/agents.
Usage
builder.AddQuartz(q =>
{
q.UseDashboardAgent(agent =>
{
agent.Endpoint = new Uri("https://ops.example.com/quartz/agents");
agent.Token = builder.Configuration["Dashboard:AgentToken"];
agent.Target = "worker-1";
// Refused until said: an agent crosses a trust boundary, and a job type is a string
// the dashboard sends.
agent.IsJobTypeAllowed = name => name.StartsWith("Acme.Jobs.", StringComparison.Ordinal);
});
});
Target is the first half of the scheduler's key on the dashboard, worker-1/QuartzScheduler; it defaults to
the machine name. The token goes as an Authorization: Bearer header, never in the URL. The agent
reconnects for as long as the scheduler runs, and a dashboard that is down when the worker starts is
dialled again until it answers.
The agent refuses every job type until IsJobTypeAllowed says which it accepts, because the connection
crosses a trust boundary and a job type is a string the dashboard sends. ReadOnly refuses every
mutation and IsOperationAllowed refuses by route name; all three are decided in the worker's process,
and nothing the dashboard sends can widen them.
Documentation
https://www.quartz-scheduler.net/documentation/quartz-4.x/packages/dashboard-agent.html
| Product | Versions 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. |
-
net10.0
- Microsoft.AspNetCore.SignalR.Client (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.0)
- Quartz (>= 4.5.0)
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 |
|---|---|---|
| 4.5.0 | 23 | 10/13/2026 |