.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
相关产品推荐
相关产品推荐

