You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:.NET Core 6.0控制台应用集成SilkierQuartz遇404问题

解决SilkierQuartz在.NET 6控制台应用中404的问题

1. 确认必备包安装

确保你已安装两个核心NuGet包:

  • SilkierQuartz
  • SilkierQuartz.AspNetCore

仅安装前者会缺失AspNetCore相关的中间件与路由配置,直接导致404错误。

2. 完整的Program.cs配置示例

.NET 6采用顶级语句,以下是正确的配置模板,注意中间件顺序不能颠倒:

using Quartz;
using SilkierQuartz;

var builder = WebApplication.CreateBuilder(args);

// 1. 配置Quartz核心服务
builder.Services.AddQuartz(q =>
{
    q.UseMicrosoftDependencyInjectionJobFactory();
    // 注册示例Job与Trigger(根据业务需求调整)
    var jobKey = new JobKey("SampleJob");
    q.AddJob<SampleJob>(opts => opts.WithIdentity(jobKey));
    q.AddTrigger(opts => opts
        .ForJob(jobKey)
        .WithIdentity("SampleJob-trigger")
        .WithCronSchedule("0/5 * * * * ?")); // 每5秒执行一次
});

// 2. 添加Quartz宿主服务,确保任务后台运行
builder.Services.AddQuartzHostedService(options =>
{
    options.WaitForJobsToComplete = true;
});

// 3. 注册SilkierQuartz服务
builder.Services.AddSilkierQuartz();

var app = builder.Build();

// 4. 启用SilkierQuartz中间件(必须放在路由映射前)
app.UseSilkierQuartz();

// 可选:添加根路径提示
app.MapGet("/", () => "SilkierQuartz 访问路径:/quartz");

app.Run();

3. 访问正确的路径

SilkierQuartz默认访问路由是/quartz,而非根路径。你需要访问:
http://localhost:5000/quartz

直接访问localhost:5000会因无对应路由返回404。

4. 自定义访问路径(可选)

如果需要修改默认路径,可在注册SilkierQuartz时配置:

builder.Services.AddSilkierQuartz(options =>
{
    options.RoutePrefix = "/my-quartz-dashboard"; // 自定义路径
});

之后访问http://localhost:5000/my-quartz-dashboard即可。

5. 额外排查点

  • 检查Quartz服务是否正常启动:查看日志确认Job与Trigger已成功加载
  • 确认无其他中间件拦截路由:比如过于严格的认证中间件可能阻止访问SilkierQuartz页面

内容的提问来源于stack exchange,提问作者ICICI81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:51:15