我想在其他浏览器中测试我的网络应用程序。我已经安装了 Virtual PC 来做到这一点。ASP.NET 开发服务器不允许远程连接,因此虚拟 PC(网络上的另一台计算机)无法访问该网站。
我发现这篇文章已经开始但没有解决方案。
我知道使用 localhost 将不起作用。我听说过使用机器 ip,但我如何获得正确的 ip?看看我的 lynksys 路由器管理员?
如果我要获得我的 IP,我确定 asp.net 开发服务器不允许远程连接。我该如何让它这样做?
我想在其他浏览器中测试我的网络应用程序。我已经安装了 Virtual PC 来做到这一点。ASP.NET 开发服务器不允许远程连接,因此虚拟 PC(网络上的另一台计算机)无法访问该网站。
我发现这篇文章已经开始但没有解决方案。
我知道使用 localhost 将不起作用。我听说过使用机器 ip,但我如何获得正确的 ip?看看我的 lynksys 路由器管理员?
如果我要获得我的 IP,我确定 asp.net 开发服务器不允许远程连接。我该如何让它这样做?
答案是:否(*)。即使您打开了 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 开发服务器端口
单击“激活”按钮开始接受连接
(注意:确保您已以管理员权限启动该程序)
我在这里对您的设置进行了一些猜测,因此请耐心等待:
如果您的虚拟机是 XP Professional、Vista Business、Windows 7 Professional 或更高版本,那么您应该能够在开发机器上本地运行 IIS,并通过虚拟机的名称从同一网络上的另一台机器访问该网络服务器。
同样,如果您在真机上进行开发并希望使用不同的虚拟机来访问 Web 应用程序,则应确保已安装 IIS,在 IIS 中创建一个新网站,然后您应该浏览到Web 应用程序通过虚拟机中的机器名称。
无论哪种方式,都不要尝试使用 Visual Studio 中的内置 Web 服务器,只需将您的站点发布到 IIS 并以这种方式使用它。
祝你好运,希望这对一些人有所帮助。
在此处使用 RINETD Deatils 设置端口转发: http ://blog.waynehartman.com/articles/218.aspx
如果您不想使用 IIS(或隧道),另一个答案是:https ://stackoverflow.com/a/12008223/1552178
在您的主机上使用 fiddler 或类似工具 - 在客户端 VM 上设置您的浏览器以使用代理,然后像往常一样在客户端上使用 localhost:dev_port。
来自客户端的所有请求都转到您的开发机器上的代理,该代理路由到开发机器上的 localhost,并且 ASP.net 开发服务器认为该请求来自您的开发机器!
我正在回答这个老问题,以帮助人们在没有 IIS的情况下使其工作。
1. 第一步
您必须下载Fiddler。
下载并安装 Fiddler 后,打开它。
进入工具-> Fiddler 选项-> 连接选项卡-> 并选中“允许远程计算机连接”:
重启提琴手。
2. 第二步
在此之后,在网络上的另一台 PC 或 VM中,打开 Internet Explorer-> Internet 选项-> 连接选项卡-> 局域网设置-> 选中“为您的局域网使用代理服务器”:
现在,您可以从网络上的另一台 PC 访问 ASP.NET Web 服务器(也许您有更多配置要做,例如防火墙、不受限制的端口等,但这是一个好的开始)!
访问它-> http://localhost.:54814
笔记 :
如果您在 Windows 上的 VM 或另一台主机上运行 ASP.NET 开发服务器并且您想从 Linux 访问它,这应该可以工作
由于某种原因,您无法直接连接到 ASP.NET 开发服务器端口,您需要先在本地代理它:
使用SPI 端口转发接受设备连接,执行以下操作:
将“本地端口”设置为设备将连接的端口号,例如 8089 将“远程主机”设置为 localhost
将“远程端口”设置为 ASP.NET 开发服务器端口
单击“激活”按钮开始接受连接
(注意:确保您已以管理员权限启动该程序)
本地转发 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
从主机响应
我尝试了以下我希望启用当前.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"
打开命令提示符并输入;“ipconfig” 这将为您提供您的机器 IP 地址。
如果您禁用防火墙(至少对于 asp.net 开发端口),您应该能够在虚拟 PC 的浏览器中键入http://192.168.1.3:3243/default.aspx