从网络上的另一台计算机访问ASP.NET开发服务器

26

我想在其他浏览器中测试我的 Web 应用程序。我已经安装了 Virtual PC 来实现这一点。ASP.NET 开发服务器不允许远程连接,因此虚拟 PC(网络上的另一台计算机)无法访问网站。

我找到了this帖子,但没有解决方案。

我知道使用 localhost 不起作用。我听说过使用机器 IP,但是如何获取正确的 IP?查看我的 lynksys 路由器管理员吗?

如果我能够获得我的 IP,我相信 asp.net dev 服务器也不允许远程连接。如何启用它来实现远程连接?


很简单:只需查看答案:https://dev59.com/e3VD5IYBdhLWcg3wU56H#7394935 并设置类似的隧道。 - quetzalcoatl
SharpProxy非常好用 https://github.com/jocull/SharpProxy - bleeeah
9个回答

34
答案是: 不行(*)。即使你打开 Windows 防火墙 TCP 端口,也不能从一台机器上访问另一台机器上的 ASP.NET 开发服务器。

根据 MSDN 文章《Visual Web Developer 中的 Web 服务器》:

它专门用于本地主机场景下(从与 Web 服务器相同的计算机上浏览)提供或运行 ASP.NET Web 页面。

换句话说,ASP.NET 开发服务器将为本地计算机的浏览器请求提供页面。它不会向其他计算机提供页面。此外,它不会提供应用程序范围之外的文件。

(*) 你必须从本地安装的 IIS 运行站点... 或者使用在这篇博客文章中描述的一些免费软件进行漂亮的黑客攻击:

iPhone 访问 Visual Studio ASP.NET 开发服务器

使用SPI 端口转发接受设备连接,执行以下操作:

将“本地端口”设置为设备将连接的端口号,我通常出于习惯使用 8080
将“远程主机”设置为 localhost
将“远程端口”设置为 ASP.NET 开发服务器端口

点击“激活”按钮开始接受连接。

(注意:确保你以管理员权限启动程序)


12

我对你的设置进行了一些猜测,请耐心等待:

如果你的虚拟机是 XP Professional、Vista Business、Windows 7 Professional 或更高版本,那么你应该能够在开发机上本地运行 IIS,并通过虚拟机名称从同一网络中的另一台机器访问该 Web 服务器。

同样地,如果你在实际机器上进行开发,并希望使用不同的虚拟机来访问 Web 应用程序,你应该确保已安装 IIS,在 IIS 中创建一个新网站,然后就可以通过机器名从虚拟机中浏览到Web应用程序。

无论哪种方式,都不要尝试使用 Visual Studio 的内置 Web 服务器,只需将你的站点发布到 IIS 中并以这种方式处理它。

祝好运,希望这有所帮助。


嗨,Chris,如果没有IIS,也可以使用WebDev和IISExpress进行托管,在这种情况下,我们无法通过远程机器访问;在这种情况下有什么想法吗? - Dinesh Kumar P
没有IIS就没有机会。 - MUT

8

尝试在Win7上运行,但无论我尝试哪个IP和端口号,都只得到“无法绑定到地址x.x.x.x.端口yyyy”的错误信息。 - quilkin

7
如果您不想使用IIS(或隧道),可以尝试以下方法:https://dev59.com/e3VD5IYBdhLWcg3wU56H#12008223 在主机上使用Fiddler或类似工具,在客户端虚拟机上设置浏览器使用代理,然后像往常一样在客户端使用localhost:dev_port。所有来自客户端的请求都将转到您的开发机器上的代理服务器,该代理服务器将路由到开发机器上的localhost,ASP.net开发服务器会认为请求来自于您的开发机器!

1
这肯定是最佳答案,每个人都已经安装了它。不过需要在 Fiddler 中允许远程连接。谢谢。 - adudley

4

我回答这个老问题是为了帮助人们在没有IIS的情况下使其正常工作。

第一步

您需要下载Fiddler

Fiddler下载并安装后,打开它。

进入工具-> Fiddler选项-> 连接标签页-> 并勾选“允许远程计算机连接”

enter image description here

重新启动Fiddler。

第二步

之后,在网络上的其他PC或虚拟机中打开Internet Explorer-> Internet选项-> 连接标签-> LAN设置-> 勾选“使用LAN代理服务器”

enter image description here

  1. 地址是DEV机器的IP地址。
  2. 端口为8888。

现在,您可以从网络上的另一台PC访问ASP.NET Web服务器(可能还需要更多配置,如防火墙、未限制的端口等,但这是一个良好的起点)!

要访问它-> http://localhost.:54814

  • 不要忘记在“localhost”后面添加一个额外的点!(覆盖本地localhost)
  • 端口,“54814”是ASP.NET Web服务器端口。

注意:

  • 要测试代理是否工作,您可以尝试使用此方法:http://localhost.:8888
  • 可能我忘记指出一些配置,但这总是取决于网络基础设施。

我已尝试了上述方法, 但它显示代理服务器拒绝连接。 - sidhewsar
你检查了“允许计算机连接”吗? - Vinc 웃
我需要在电脑上允许哪种连接? - sidhewsar
步骤1:下载并安装 Fiddler 后,打开它。进入“工具”->“Fiddler 选项”->“连接”选项卡->勾选“允许远程计算机连接”: - Vinc 웃

1

Linux的工作解决方案

如果你在虚拟机上运行Windows上的ASP.NET Dev Server或在另一台主机上运行,并且想要从Linux访问它,那么这应该是有效的。

在Windows机器上

由于某种原因,您无法直接连接到ASP.NET开发服务器端口,您需要首先在本地进行代理:

使用SPI Port Forward接受设备连接并执行以下操作:

将“本地端口”设置为设备将连接的端口号,例如8089 将“远程主机”设置为localhost
将“远程端口”设置为ASP.NET Dev Server端口

点击“Activate”按钮开始接受连接

(注意:确保您已以管理员权限启动程序)

在Linux机器上

将本地主机端口8089转发到Windows IP(用正确的IP替换GUEST_IP_HERE):

iptables -t nat -A OUTPUT -m addrtype --src-type LOCAL --dst-type LOCAL -p tcp --dport 8089 -j DNAT --to-destination GUEST_IP_HERE:8089
iptables -t nat -A POSTROUTING -m addrtype --src-type LOCAL --dst-type UNICAST -j MASQUERADE

这是必需的,因为开发服务器专门查找请求中的本地主机地址,并且不会响应来自主机的 http://GUEST_IP_HERE:8089

0

我尝试了以下操作,期望能够启用当前的 .net framework [ core / x-platform ] 6.0 发布提供的 asp.net 开发 Web 服务器,至少在本地子网中从其他机器访问而无需使用任何第三方软件来启用端口转发/代理到仅公开 Web 服务器的本地主机。

我能够从 Windows WSL [ Windows 子系统 Linux ] 分发会话启动 asp.net 开发 Web 服务器,并使用 Windows 主机 Wi-Fi 适配器 IP 地址访问它,但不能从我的子网中的另一台机器上访问,例如在桥接模式下运行的 VMware Linux 安装。如果将 VMware Linux 安装切换到 NAT 模式,则可以正常工作。

您对为什么这样做不允许其他主机访问有何想法吗?

netsh interface portproxy add v4tov4 listenport=<tcp port for non-localhost access allowed/enabled in windows firewall> listenaddress=0.0.0.0 < or windows wired/wifi ipaddress > connectport=<tcp port for localhost access to asp.net development web server> connectaddress=localhost 

e.g. netsh interface portproxy add v4tov4 listenport=4430 listenaddress=0.0.0.0 connectport=7146 connectaddress=localhost & netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=5038 connectaddress=localhost 

netsh interface portproxy show all 

// for %i in ( 4430, 8080 ) do ( netsh interface portproxy delete v4tov4 listenport=%i listenaddress=0.0.0.0 )

netsh advfirewall firewall add rule name="Asp.Net Development Web Server Listeners to Expose" dir=in protocol=tcp localport=<csv list of tcp ports allowed/enabled in windows firewall> profile=private|any remoteip=localsubnet|any action=allow [ enable=yes ]

e.g. netsh advfirewall firewall add rule name="Asp.Net Development Web Server Listeners to Expose" dir=in protocol=tcp localport=4430,8080 profile=private remoteip=localsubnet action=allow

netsh advfirewall firewall show rule name="Asp.Net Development Web Server Listeners to Expose" [ or wf.msc | inbound rules ]

// netsh advfirewall firewall delete rule name="Asp.Net Development Web Server Listeners to Expose"

0

2022年:

在尝试了所有asp.net core .NET 6方面的方法并失败后,我发现了https://mitmproxy.org/

mitmproxy --mode reverse:https://localhost:7053 --ssl-insecure

适用于我的使用情况。

在手机和其他设备上,使用 http://{your-pc-ip}:8080 进行访问。


-4
打开命令提示符并输入“ipconfig”,这将给出您的机器IP地址。
如果您禁用防火墙(至少是针对asp.net dev端口),则应该能够在虚拟PC的浏览器中输入http://192.168.1.3:3243/default.aspx

5
无法运行。情况并不那么简单。开发服务器只允许来自同一台机器的连接。 - splattne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接