从网络上的另一台电脑访问 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

从网络中的另一台计算机访问本地 GAE SDK 服务器

如何从同一网络上的另一台计算机访问 localhost? [复制]

如何从其他设备访问 XAMPP 服务器?

在另一台 PC 上出现错误消息“禁止您无权访问 / 在此服务器上”

从网络中的另一台计算机连接到 localhost