<p>Dev Tunnels为C# Web API提供无需公网IP的安全临时隧道,支持Visual Studio集成、项目属性配置、CLI手动创建、launchSettings.json固化及连通性验证。</p>

如果您在使用C#开发Web API时需要将本地服务临时暴露给外部网络以进行跨设备或远程调试,Dev Tunnels提供了一种无需配置路由器或公网IP的安全隧道方案。以下是具体操作步骤:
一、安装并启用Dev Tunnels扩展
Dev Tunnels功能集成于Visual Studio 17.7及以上版本,需确保已启用对应服务组件。该扩展负责在本地与Microsoft托管的中继节点之间建立加密隧道,并为本地端口分配唯一可访问的HTTPS终结点。
1、打开Visual Studio Installer,选择当前安装的Visual Studio版本,点击“修改”。
2、在“工作负载”选项卡中,勾选.NET桌面开发与ASP.NET和Web开发(若未安装)。
3、切换至“单独组件”选项卡,搜索并勾选Dev Tunnels支持,完成修改安装。
4、启动Visual Studio,进入“工具”→“选项”→“环境”→“预览功能”,确认已启用启用Dev Tunnels复选框。
二、通过项目属性配置Dev Tunnels
此方法适用于已创建的ASP.NET Core Web API项目,直接在项目属性中启用隧道,由Visual Studio自动管理生命周期,适合快速调试场景。
1、在解决方案资源管理器中右键单击Web API项目,选择“属性”。
2、在左侧导航栏中点击调试,向下滚动至“Web服务器设置”区域。
3、勾选启用Dev Tunnels,系统将自动生成隧道名称并显示状态指示器。
4、点击创建隧道按钮,等待状态变为“已就绪”,此时右侧将显示类似https://xxxx-xxxx-xxxx-xxxx.dev.tunnels.api.visualstudio.com的公共URL。
三、使用dotnet dev-tunnels CLI手动创建隧道
当项目未在Visual Studio中打开,或需在命令行环境中控制隧道行为时,可借助dotnet CLI工具直接调用Dev Tunnels服务,支持自定义端口、隧道类型及身份验证策略。
1、以管理员权限打开终端,执行命令安装全局工具:dotnet tool install --global Microsoft.DevTunnels.Cli。
2、运行登录命令:devtunnel login,浏览器将自动打开并要求使用Microsoft账户授权。
3、启动本地Web API(如监听https://localhost:5001),随后执行隧道创建:devtunnel host --port 5001 --name myapi-debug --allow-http。
4、命令成功后,终端将输出包含https://myapi-debug-xxxx.dev.tunnels.api.visualstudio.com的完整访问地址,该地址可立即用于外部请求测试。
四、在launchSettings.json中嵌入隧道配置
该方式将Dev Tunnels参数固化于项目配置文件中,使团队成员在F5调试时自动触发隧道创建,避免重复手动操作,适用于协作开发流程。
1、在项目根目录找到Properties/launchSettings.json文件并打开。
2、在profiles节点下,定位到当前启动配置(如"IIS Express"或"YourProjectName")。
3、添加新属性:"devTunnels": { "enabled": true, "name": "team-api-dev", "requireAuthentication": false }。
4、保存文件后重启Visual Studio,再次按F5运行时,IDE将在启动Kestrel的同时自动部署并注册指定名称的隧道。
五、验证隧道连通性与安全限制
Dev Tunnels默认启用基于OAuth的身份验证与TLS 1.3加密,所有流量经微软中继节点转发,本地服务无需开放防火墙端口。验证阶段需确认路由可达性与权限边界。
1、在浏览器中访问生成的https://*.dev.tunnels.api.visualstudio.com/health,返回HTTP 200即表示隧道通道正常。
2、使用curl测试API端点:curl -k https://your-tunnel-name-xxxx.dev.tunnels.api.visualstudio.com/api/values。
3、检查Visual Studio底部状态栏,确认显示Dev Tunnels:已连接(x active),其中x为当前活跃连接数。
4、注意:免费层隧道默认每24小时自动过期且最多同时存在3个活动隧道,超限时需手动删除旧隧道或升级账户权限。


















