从网络上的另一台电脑访问 ASP.NET 开发服务器
Posted
技术标签:
【中文标题】从网络上的另一台电脑访问 ASP.NET 开发服务器【英文标题】:Accessing ASP.NET Development Server from another pc on the network 【发布时间】:2010-12-16 08:40:36 【问题描述】:我想在其他浏览器中测试我的网络应用。我已经安装了 Virtual PC 来做到这一点。 ASP.NET 开发服务器不允许远程连接,因此虚拟 PC(网络上的另一台计算机)无法访问该网站。
我发现this 的帖子已启动但没有解决方案。
我知道使用 localhost 将不起作用。我听说过使用机器 ip,但我如何获得正确的 ip?看看我的 lynksys 路由器管理员?
如果我要获得我的 IP,我确定 asp.net 开发服务器不允许远程连接。如何启用它?
【问题讨论】:
就这么简单:只需查看答案:***.com/a/7394935/717732 并为自己设置一个类似的隧道 SharpProxy 工作得非常好github.com/jocull/SharpProxy 【参考方案1】:打开命令提示符并输入; "ipconfig" 这将为您提供您的机器 IP 地址。
如果您禁用防火墙(至少对于 asp.net 开发端口),您应该能够在虚拟 PC 的浏览器中输入 http://192.168.1.3:3243/default.aspx
【讨论】:
这不起作用。没那么简单。开发服务器被设计为只接受来自同一台机器的连接。【参考方案2】:我在这里对您的设置进行了一些猜测,请耐心等待:
如果您的虚拟机是 XP Professional、Vista Business、Windows 7 Professional 或更高版本,那么您应该能够在开发机器上本地运行 IIS,并通过虚拟机的名字。
同样,如果您在真机上进行开发并希望使用不同的虚拟机来访问 Web 应用程序,则应确保已安装 IIS,在 IIS 中创建一个新网站,您应该通过虚拟机中的机器名称浏览到 Web 应用程序。
无论哪种方式,都不要尝试使用 Visual Studio 中的内置 Web 服务器,只需将您的网站发布到 IIS 并以这种方式使用它。
祝你好运,希望这会有所帮助。
【讨论】:
嗨 Chris,如果没有 IIS,也可以使用 WebDev 和 IISExpress 托管,在这种情况下,我们无法通过远程计算机访问;在这种情况下有什么想法吗? 没有 IIS 就没有机会。【参考方案3】:答案是:否(*)。即使您打开 Windows 防火墙 TCP 端口,您也无法从另一台计算机访问 ASP.NET 开发服务器。
来自MSDN文章"Web Servers in Visual Web Developer":
它专门用于在本地主机场景下提供或运行 ASP.NET 网页(从与 Web 服务器相同的计算机浏览)。
换句话说,ASP.NET 开发服务器将为本地计算机上的浏览器请求提供页面。它不会将页面提供给另一台计算机。此外,它不会提供应用程序范围之外的文件。
(*) 您必须从本地安装的 IIS 运行您的网站...或者使用这篇博文中描述的一些免费软件进行漂亮的破解:
iPhone Accessing the Visual Studio ASP.NET Development Server
使用SPI Port Forward 接受设备连接,执行以下操作:
将“本地端口”设置为设备将连接的端口号,出于习惯,我通常使用 8080 将“远程主机”设置为 localhost 将“远程端口”设置为 ASP.NET 开发服务器端口
点击“激活”按钮开始接受连接
(注意:确保您已以管理员权限启动该程序)
【讨论】:
【参考方案4】:使用 RINETD 设置端口转发 详情在这里:http://blog.waynehartman.com/articles/218.aspx
【讨论】:
在 Win7 上试过,但我得到的只是'无法绑定到地址 x.x.x.x。 port yyyy' 我尝试的任何 IP 和端口号【参考方案5】:如果您不想使用 IIS(或隧道),另一个答案:https://***.com/a/12008223/1552178
在您的主机上使用 fiddler 或类似工具 - 在客户端上设置您的浏览器 VM 使用代理,然后像往常一样使用 localhost:dev_port 客户。
来自客户端的所有请求都转到您的开发机器上的代理,该代理 路由到开发机器上的 localhost 和 ASP.net 开发服务器 认为请求来自您的开发机器!
【讨论】:
当然这应该是最佳答案,每个人都已经安装了这个。谢谢。 (您必须允许在提琴手内部进行远程连接)。【参考方案6】:我正在回答这个老问题,以帮助人们使其在没有 IIS 的情况下工作。
1.第一步
你必须下载Fiddler。
下载并安装 Fiddler 后,打开它。
进入工具-> Fiddler 选项-> 连接选项卡-> 并勾选“允许远程计算机连接”:
重启 Fiddler。
2。第二步
之后,在网络上的另一台电脑或虚拟机中,打开 Internet Explorer-> Internet 选项-> 连接选项卡-> 局域网设置-> 选中“使用代理服务器”为您的局域网" :
-
地址是您的 DEV 机器的 IP 地址。
并把端口 8888
现在,您可以从网络上的另一台 PC 访问 ASP.NET Web 服务器(也许您有更多配置要做,例如防火墙、不受限制的端口等,但这是一个好的开始)!
访问它 -> http://localhost.:54814
不要忘记“localhost”后面的附加点! (覆盖本地 localhost) 在我的例子中,端口“54814”是 ASP.NET Web 服务器端口。注意:
要测试代理是否工作,你可以试试这个:http://localhost.:8888 也许我忘了指出一些配置,但它始终取决于网络基础设施。【讨论】:
我已经尝试了上述但它显示代理服务器拒绝连接 您是否勾选了“允许计算机连接”? 我必须在计算机上允许哪些连接?? 第 1 步:下载并安装 Fiddler 后,打开它。进入工具->提琴手选项->连接选项卡->并选中“允许远程计算机连接”:【参考方案7】:适用于 Linux 的工作解决方案
如果您在 Windows 上的虚拟机或另一台主机上运行 ASP.NET 开发服务器并且您想从 Linux 访问它,这应该可以工作
在 Windows 机器上
由于某种原因,您无法直接连接到 ASP.NET 开发服务器端口,您需要先在本地代理它:
使用SPI Port Forward 接受设备连接,执行以下操作:
将“本地端口”设置为设备将连接的端口号,例如 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
【讨论】:
【参考方案8】:我尝试了以下我希望启用当前 .net 框架 [核心/x-platform] 6.0 版本提供的 asp.net 开发 Web 服务器至少可以从本地子网上的其他机器访问,而无需使用任何第 3 方软件启用端口转发/代理到 localhost 仅暴露的 Web 服务器。
我能够从 windows wsl [windows subsystem for linux] 发行版会话启动 asp.net 开发 Web 服务器,并使用 windows 主机 wi-fi 适配器 IP 地址而不是从我子网上的另一台机器访问它,例如在桥接模式下运行的 vmware linux 安装。如果我将 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"
【讨论】:
以上是关于从网络上的另一台电脑访问 ASP.NET 开发服务器的主要内容,如果未能解决你的问题,请参考以下文章
从另一个网络上的另一台计算机访问 db 时出现错误 #1045
如何从同一网络上的另一台计算机访问 localhost? [复制]