在 Visual Studio 2022 17.3 预览版 1.1 中,我们添加了对端口隧道(转发)到 ASP.NET 核心 Web 项目的支持。端口隧道支持无法直接相互连接的计算机之间的连接。端口隧道也称为端口转发或 Web 隧道。在开发 ASP.NET Core 应用时,你可能希望使用端口隧道的一些情况包括:
- 开发由 Power Platform 使用的 API。
- 为外部服务开发 Web 挂钩。
- 在外部设备上测试 Web 应用。
这些只是您可能希望对 Web 项目使用端口隧道的几个示例。此功能取决于必须注册的个人预览版。
要开始使用,请执行以下步骤。
- 注册 Visual Studio 中端口隧道的私人预览版。
- 下载 17.3 预览版 1.1 Visual Studio 更新。
- 在 Visual Studio 中启用预览功能。
- 配置项目。
1:注册 Visual Studio 中端口隧道的私人预览版
若要开始使用,请通过下面的链接注册个人预览版。您应该使用在 Visual Studio 中使用的同一帐户登录。如果不注册此预览版,端口隧道将不起作用。https://aka.ms/tunnels-signup
注册后,下载Visual Studio预览版并在Visual Studio中启用该功能。
2: 下载 17.3 预览版 1.1 Visual Studio 更新
我们在 Visual Studio 2022 17.3 Preview 1.1 中添加了对此预览功能的支持。您可以在下面的链接下载。https://visualstudio.microsoft.com/vs/preview/
3:在 Visual Studio 中启用预览
在 Visual Studio 中,转到“工具>选项”>“预览功能”,然后选中“为 Web 应用程序启用端口隧道”选项。

4:配置项目
在 Visual Studio 中开发 ASP.NET 核心项目时,用于启动应用程序的设置存储在 Properties/launchSettings.json 的文件中。此文件包含 Web 应用的一个或多个启动配置文件。为了在运行应用时启用要创建或连接的隧道,请在启动配置文件中添加属性“createTunnel”:true。例如,下面是一个完整的 launchSettings.json 文件,用于 ASP.NET 核心 Web 项目。
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:28981",
"sslPort": 44342
}
},
"profiles": {
"MyWebApp": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7130;http://localhost:5130",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"createTunnel": true
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

启动 Web 应用时,可以看到浏览器未导航到本地主机 URL,而是使用公共隧道 URL。可以在本地环境之外访问此 URL。您可以与朋友或同事共享公共 URL 以测试应用程序。如果要在外部设备(如手机或平板电脑)上测试 Web 应用,可以导航到设备上的 URL。为了简化此操作,您可以在 Edge 浏览器中生成指向 URL 的 QR 码。要在Edge中创建QR码,请单击URL栏,应该会出现QR码按钮。单击该按钮可生成并查看QR码。

您可以使用手机或平板电脑扫描此QR码以导航到该URL。
如果遇到问题该怎么办?
这是早期预览版,因此在使用此功能时可能会遇到一些问题。报告问题的最佳方法是使用 Visual Studio 中内置的“报告问题”支持。您也可以在这里发表评论,或在Twitter上联系赛义德@SayedIHashimi。
已知问题
- 目前不支持 GitHub.com 帐户。
- 我们将在将来的更新中添加对 GitHub.com 帐户的支持。
- Visual Studio 中的多个帐户
- 如果你在 Visual Studio 中使用多个 Azure 帐户登录,则将使用检测到的第一个 Azure 帐户创建隧道。
- 稍后,我们将添加选择特定帐户以创建隧道的功能。
- 如果看到包含以下消息的对话框,则登录到 Visual Studio 的帐户无权创建隧道。确保你已在 Visual Studio 中使用 Azure 帐户登录。

- 隧道认证
- 目前,所有隧道都是在启用匿名身份验证的情况下创建的。
- 我们计划在将来的更新中默认确保所有新隧道的安全,并能够配置身份验证设置。
- 302 错误
- 访问隧道 URL 时,请求可能会被重定向,如果客户端未遵循重定向,则可能会遇到 302 错误。
- 当您收到 302 错误时,您可以修改全局 URL 以指向隧道所在的特定数据中心。例如,如果您的全局 URL 是 https://vstunnel123456.rel.tunnels.api.visualstudio.com,请改用 https://vstunnel123456.use.rel.tunnels.api.visualstudio.com。
- 我们在配置 GitHub Web 挂钩时看到了 302 错误。我们将与 GitHub 合作解决此问题。
包起来
在这篇文章中,我们介绍了 Visual Studio 中 ASP.NET 核心应用的新 Web 隧道功能,以及您应该采取哪些步骤来试用它。这只是一个早期预览;我们将继续改进此体验,以便可以在非预览版本中发布此体验。请尝试一下,让我们知道它是如何为您服务的。