在Visual Studio中调试.NET应用程序时,如何远程访问端口

本文关键字:远程访问 应用程序 Studio Visual 调试 NET | 更新日期: 2023-09-27 17:59:24

我正在VMWare Fusion虚拟机中运行Visual Studio。当我调试应用程序时,VS使应用程序在localhost:50609上可用。我可以在vm中有效地使用它。然而,我想从主机(OsX主机)中运行的模拟移动应用程序访问这个正在运行的实例。这不起作用——主机根本看不到来宾上正在运行的实例。

我开始认为这与防火墙或虚拟机网络的设置方式有关。但是,长话短说,我非常确信web应用程序是专门托管在"localhost"上的,因此在localhost本身之外是不可访问的。因此,我无法在虚拟网络上使用来宾操作系统的IP地址来访问该站点。事实上,即使在客户操作系统中也是如此;即,我无法使用地址192.168.x.x:50609访问该站点,但我可以使用localhost:50609访问该站点(同样,这是来自来宾,而不是主机)。

因此,我确信VS或IIS(我认为它运行的是IISExpress;无论VS2013默认情况如何)设置为只允许通过localhost进行连接。出于安全考虑,这似乎是一个很好的默认值,但在这种情况下,这不是我想做的

我可以让这个已调试的应用程序对外部机器进行访问吗

这是使用虚拟机运行的,这一事实可能并不重要,但我只想给出具体的设置。我禁用了防火墙来测试这个,所以它不是那样的。

[EDIT]指向如何在Web Matrix中做到这一点的链接很有用,但我仍然缺少如何在Visual Studio中更改默认地址的最后一步。我认为这只是答案的一半。

在Visual Studio中调试.NET应用程序时,如何远程访问端口

我为此挣扎了两天,并根据几条"转移注意力"的线索搜索了互联网。在我的系统上,我终于让它按预期工作了。关键是Vagrant(Docker)不会在127.0.0.1上正确转发。你需要将服务器设置为监听"0.0.0.0"。我在Vagrant中使用Rails时就知道这一点。但要揭示如何在DotNet CLI(IIS)中指定这一点并不容易。答案是,您可以将其添加到项目的"Program.cs"中对WebHostBuilder的调用中:.UseUrls("http://0.0.0.0:5000") // Take that, Docker port forwarding!!!

或者像这样调用DotNet CLI:ASPNETCORE_URLS="https://*:5000" dotnet run

我选择了第三种选择。我设置了一个环境变量:ASPNETCORE_URLS="https://*:5000"