26

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

我发现这篇文章已经开始但没有解决方案。

我知道使用 localhost 将不起作用。我听说过使用机器 ip,但我如何获得正确的 ip?看看我的 lynksys 路由器管理员?

如果我要获得我的 IP,我确定 asp.net 开发服务器不允许远程连接。我该如何让它这样做?

4

8 回答 8

34

答案是:(*)。即使您打开了 Windows 防火墙 TCP 端口,您也无法从另一台计算机访问 ASP.NET 开发服务器。

来自 MSDN 文章“Visual Web Developer 中的 Web 服务器

它是专门为在本地主机方案下提供或运行 ASP.NET 网页而构建的(从与 Web 服务器相同的计算机进行浏览)。

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

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

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

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

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

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

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

于 2010-10-29T13:14:55.043 回答
12

我在这里对您的设置进行了一些猜测,因此请耐心等待:

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

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

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

祝你好运,希望这对一些人有所帮助。

于 2009-11-13T16:39:08.463 回答
8


在此处使用 RINETD Deatils 设置端口转发: http ://blog.waynehartman.com/articles/218.aspx

于 2011-02-10T14:29:51.827 回答
7

如果您不想使用 IIS(或隧道),另一个答案是:https ://stackoverflow.com/a/12008223/1552178

在您的主机上使用 fiddler 或类似工具 - 在客户端 VM 上设置您的浏览器以使用代理,然后像往常一样在客户端上使用 localhost:dev_port。

来自客户端的所有请求都转到您的开发机器上的代理,该代理路由到开发机器上的 localhost,并且 ASP.net 开发服务器认为该请求来自您的开发机器!

于 2012-08-17T15:08:50.500 回答
4

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

1. 第一步

您必须下载Fiddler

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

进入工具-> Fiddler 选项-> 连接选项卡-> 并选中“允许远程计算机连接”

在此处输入图像描述

重启提琴手。

2. 第二步

在此之后,在网络上的另一台 PC 或 VM中,打开 Internet Explorer-> Internet 选项-> 连接选项卡-> 局域网设置-> 选中“为您的局域网使用代理服务器”

在此处输入图像描述

  1. 地址是您的 DEV 机器的 IP 地址。
  2. 并把8888端口

现在,您可以从网络上的另一台 PC 访问 ASP.NET Web 服务器(也许您有更多配置要做,例如防火墙、不受限制的端口等,但这是一个好的开始)!

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

  • 不要忘记“localhost”之后的附加点!(覆盖本地 localhost)
  • 在我的例子中,端口“54814”是 ASP.NET Web 服务器端口。

笔记 :

  • 要测试代理是否工作,你可以试试这个:http ://localhost.:8888
  • 也许我忘了指出一些配置,但它总是取决于网络基础设施。
于 2014-07-10T19:30:05.343 回答
1

适用于 Linux 的工作解决方案

如果您在 Windows 上的 VM 或另一台主机上运行 ASP.NET 开发服务器并且您想从 Linux 访问它,这应该可以工作

在 Windows 机器上

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

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

将“本地端口”设置为设备将连接的端口号,例如 8089 将“远程主机”设置为 localhost
将“远程端口”设置为 ASP.NET 开发服务器端口

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

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

在 Linux 机器上

本地转发 localhost 端口 8089 到 windows IP(替换GUEST_IP_HERE为正确的 ip):

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

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

于 2017-02-21T20:04:08.703 回答
0

我尝试了以下我希望启用当前.net框架[核心/x平台] 6.0版本提供的asp.net开发Web服务器至少从本地子网上的其他机器访问而无需使用任何第3方软件启用端口转发/代理到 localhost 仅暴露的 Web 服务器。

我能够从 windows wsl [windows subsystem for linux] 发行会话启动 asp.net 开发 Web 服务器,并使用 windows 主机 wi-fi 适配器 IP 地址而不是从我子网上的另一台机器访问它,例如 vmware linux install以桥接模式运行。如果我将 vmware linux install 切换到 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"
于 2021-10-03T18:19:12.727 回答
-4

打开命令提示符并输入;“ipconfig” 这将为您提供您的机器 IP 地址。

如果您禁用防火墙(至少对于 asp.net 开发端口),您应该能够在虚拟 PC 的浏览器中键入http://192.168.1.3:3243/default.aspx

于 2009-11-13T16:36:12.823 回答