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

TickerQ在IIS子域名托管环境下无法加载仪表盘的问题

IIS子域名托管下TickerQ仪表盘加载失败问题解决

开发环境中基于TickerQ搭建的CRON任务API仪表盘可正常访问,但部署到IIS并以子域名(SampleAPI)托管时,仪表盘无法加载,且出现SetBasePath配置路径重复的问题。

问题原因

当应用部署在IIS的子路径(如/SampleAPI)下时,硬编码的SetBasePath("/TickerQ")会与IIS应用的基路径叠加,导致实际请求路径变为/SampleAPI/TickerQ/TickerQ,路径重复引发资源加载失败。

解决方案

1. 修正BasePath配置

直接指定包含IIS子路径的完整BasePath,避免路径叠加:

builder.Services.AddTickerQ(options =>
{
    options.AddOperationalStore(efOptions =>
    {
        efOptions.UseTickerQDbContext<TickerQDbContext>(optionsBuider =>
        {
            optionsBuider.UseSqlServer("Data Source=local;database=PracticeDB;user id=test; password=test@123; TrustServerCertificate=True;", b => b.MigrationsAssembly("TickerQAPI"));
        }, schema: "ticker");
    });
    options.AddDashboard(dashboardOptions =>
    {
        // 结合IIS子路径设置完整BasePath
        dashboardOptions.SetBasePath("/SampleAPI/TickerQ");
        dashboardOptions.WithBasicAuth("admin", "Test@123");
    });
});

// 确保中间件顺序正确
app.UseRouting();
app.UseAuthorization();
app.UseTickerQ();

如果不想硬编码子路径,可通过配置文件动态读取:

// 从appsettings.json读取基路径
var appBasePath = builder.Configuration["App:BasePath"] ?? "/SampleAPI";
dashboardOptions.SetBasePath($"{appBasePath}/TickerQ");

2. 验证IIS应用配置

  • 确认IIS中应用的虚拟路径设置为/SampleAPI,域名绑定指向正确的应用池。
  • 检查IIS的URL重写规则,确保未修改TickerQ仪表盘的请求路径。

3. 排查资源加载问题

通过浏览器开发者工具(F12)查看网络请求,确认失败资源的URL是否存在路径重复。修改配置后,尝试访问https://yourdomain/SampleAPI/TickerQ验证仪表盘是否正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 19:14:48