.NET 7 Blazor WASM(含Server)部署IIS后无法修改API监听端口5000
解决Blazor Hosted应用API端口/域名适配问题
1. 修正Server项目的API监听配置
- 打开Server项目的
appsettings.json,检查是否存在Urls配置项。如果有硬编码的http://localhost:5000相关内容,直接删除或注释掉这一行。部署到IIS后,Kestrel会自动接收IIS反向代理的请求,无需硬编码本地端口。 - 若Server项目的
Program.cs里写死了Kestrel监听地址(比如builder.WebHost.UseUrls("http://localhost:5000")),删掉这行代码,让IIS管理端口与域名绑定。
2. 调整Client项目的API请求地址
- 打开Client项目的
Program.cs,找到注册HttpClient的代码,把硬编码的http://localhost:5000替换为相对路径或动态域名:- 推荐用相对路径:
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });,这样Client会自动使用当前网站域名(如https://example.com)作为API基础地址。 - 若API有特定路由前缀(如
/api),确保请求时带上前缀,或在BaseAddress中包含该路径。
- 推荐用相对路径:
- 同步检查Client项目
wwwroot/appsettings.json中的API地址配置,替换为相对路径或当前域名。
3. 确认IIS站点配置
- 确保IIS站点绑定了
example.com的HTTPS证书,端口设置为标准HTTPS端口443。 - 应用池的.NET CLR版本设为
No Managed Code(Blazor Hosted的Server项目是ASP.NET Core,无需传统.NET CLR环境)。 - 站点物理路径指向发布后的Server项目输出文件夹(Hosted模式下Server是入口,会托管Client静态文件)。
4. 验证混合内容问题
部署完成后,打开浏览器开发者工具(F12)的Console标签,检查是否还有混合内容报错。若有,排查是否存在其他硬编码的HTTP请求地址(如静态资源、第三方接口),全部替换为HTTPS或相对路径。
内容的提问来源于stack exchange,提问作者Stefan Mostert
相关产品推荐
相关产品推荐

