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

如何通过外部IP而非localhost访问IIS部署的Swagger UI?

解决IIS部署Swagger后外部无法访问的问题

Swagger完全支持外部访问,你遇到的问题大概率是配置或网络层面的限制,按以下步骤逐一排查:

1. 解除Swagger的环境限制

如果是ASP.NET Core项目,默认Swagger只在开发环境启用,你需要修改启动代码,让它在部署环境也能正常运行:
打开Program.cs(老版本是Startup.cs),找到Swagger相关配置,把原来的环境判断去掉:

// 原来的代码(仅开发环境启用)
// if (app.Environment.IsDevelopment())
// {
//     app.UseSwagger();
//     app.UseSwaggerUI();
// }

// 修改后:不管环境都启用(生产环境建议加权限验证)
app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API名称 V1");
    c.RoutePrefix = "swagger"; // 保持这个路径,和你本地访问的一致
});

2. 检查IIS站点绑定

打开IIS管理器,找到你的站点,右键选择「编辑绑定」:

  • 绑定的IP地址不要选localhost,改成「全部未分配」或者直接指定服务器的外部IP
  • 端口设置为44363,协议选HTTP(和你本地访问的协议一致)
  • 确保没有其他站点占用44363端口

3. 开放服务器防火墙端口

打开Windows Defender防火墙,添加一条入站规则:

  • 规则类型选「端口」,下一步
  • 选择TCP,指定本地端口为44363,下一步
  • 允许连接,下一步
  • 勾选所有网络类型(根据你的实际环境调整),下一步
  • 给规则起个名字(比如「Swagger API 44363」),完成

如果是云服务器(阿里云/腾讯云等),还要去云平台的安全组里添加入方向规则,开放44363端口的TCP流量。

4. 验证应用的监听设置

ASP.NET Core应用如果默认只监听localhost,也会导致外部无法访问,可以在Program.cs里强制设置监听所有IP:

var builder = WebApplication.CreateBuilder(args);
// 让应用监听所有IP的44363端口
builder.WebHost.UseUrls("http://*:44363");

不过部署到IIS的话,这条不是必须的,但如果前面的步骤都没解决,可以试试这个。

按上面的步骤排查完,应该就能用外部IP访问http://xx.xx.xx.xx:44363/swagger/index.html了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:27:39