You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

.NET Aspire Dashboard:动态修改带查询参数的服务URL及重启更新方案问询

.NET Aspire 仪表盘自定义认证URL方案

问题1:替换默认服务URL并禁用默认端点

你提到的WithHttpsEndpoint(Uri)方法确实不存在,不过可以通过禁用默认端点自动检测+自定义端点上报的方式实现需求:

步骤1:在AppHost中禁用默认端点

在你的Aspire AppHost项目的Program.cs里,配置Web服务时关闭默认HTTP/HTTPS端点的自动注册,避免仪表盘显示原始URL:

var builder = DistributedApplication.CreateBuilder(args);

var webApp = builder.AddProject<Projects.YourWebApp>("auth-web")
    // 禁用默认HTTP端点
    .WithHttpEndpoint(endpoint => endpoint.Disable())
    // 禁用默认HTTPS端点
    .WithHttpsEndpoint(endpoint => endpoint.Disable());

builder.Build().Run();

步骤2:在Web应用中生成并上报认证URL

在Web应用的Program.cs里,生成随机token后,通过Aspire的IResourcePublisher将完整认证URL上报给仪表盘:

  1. 先添加依赖包:在Web应用的项目文件中引入Aspire.Hosting.Abstractions
<PackageReference Include="Aspire.Hosting.Abstractions" Version="9.0.0" />
  1. 编写代码生成URL并上报:
var builder = WebApplication.CreateBuilder(args);

// 生成随机认证token
var authToken = Guid.NewGuid().ToString("N");
// 基于Aspire注入的基础服务URL拼接完整认证地址
var baseUri = builder.Configuration["Aspire:ServiceUri"];
var authUrl = new Uri($"{baseUri}/login?t={authToken}");

// 注册后台服务,启动时上报自定义端点
builder.Services.AddHostedService(sp => new AuthEndpointPublisher(sp, authUrl));

var app = builder.Build();

// 你的Web应用中间件配置...

app.Run();

// 自定义端点上报服务
public class AuthEndpointPublisher : IHostedService
{
    private readonly IResourcePublisher _publisher;
    private readonly Uri _authUrl;

    public AuthEndpointPublisher(IServiceProvider sp, Uri authUrl)
    {
        _publisher = sp.GetRequiredService<IResourcePublisher>();
        _authUrl = authUrl;
    }

    public async Task StartAsync(CancellationToken cancellationToken)
    {
        // 向Aspire仪表盘发布自定义HTTPS端点,标记为web类型(会在仪表盘显示为可点击的链接)
        await _publisher.PublishEndpointAsync(
            new Endpoint("auth-login", _authUrl, EndpointProtocol.Https, "web"),
            cancellationToken);
    }

    public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}

这样仪表盘就只会显示你生成的带token的认证URL,默认端点被完全禁用。

问题2:重启服务时自动更新URL

上面的方案天然支持重启更新:每次点击仪表盘的"Restart Service"按钮,Web应用会重新启动,重新生成随机token并拼接新的认证URL,然后通过IResourcePublisher上报新的端点信息。Aspire仪表盘会实时接收并更新展示的URL,无需额外配置。


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

火山引擎 最新活动