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

.NET Aspire中如何固定SQL Server容器的hostPort

固定Aspire中SQL Server组件的HostPort

我需要固定SQL Server组件的hostPort,以便使用SSMS或其他工具访问数据库时无需每次更新端口。在Aspire版本8.0.0-preview.1.23557.2中我可以实现此操作,但升级到更高版本后,Aspire总是分配随机端口。

此前我使用WithEndpoint方法实现端口固定,代码示例如下(仅在旧版本有效):

var builder = DistributedApplication.CreateBuilder(args);

var apiService = builder.AddProject<Projects.AspireApp1_ApiService>("apiservice");

var sql = builder.AddSqlServerContainer("sql")
    .AddDatabase("sqldata")
    .WithEndpoint(1433, 1433);

builder.AddProject<Projects.AspireApp1_Web>("webfrontend")      
    .WithReference(sql)
    .WithReference(apiService); 

builder.Build().Run();  // 运行分布式应用

在更高版本的Aspire中,WithEndpoint方法不再适配容器端口固定场景,正确的实现方式是使用WithHostPort方法指定宿主机映射端口,修改后的代码如下:

var builder = DistributedApplication.CreateBuilder(args);

var apiService = builder.AddProject<Projects.AspireApp1_ApiService>("apiservice");

var sql = builder.AddSqlServerContainer("sql")
    .AddDatabase("sqldata")
    .WithHostPort(1433); // 将宿主机端口固定为1433

builder.AddProject<Projects.AspireApp1_Web>("webfrontend")      
    .WithReference(sql)
    .WithReference(apiService); 

builder.Build().Run();

你也可以通过配置文件的方式固定端口:
在appsettings.json中添加如下配置项:

{
  "Parameters": {
    "sql:HostPort": 1433
  }
}

完成上述配置后,启动Aspire应用时SQL Server容器的宿主机端口会固定为1433,你可以直接通过localhost,1433使用SSMS连接数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:55:12