【问题标题】:Accessing ASP.NET Development Server from another pc on the network从网络上的另一台电脑访问 ASP.NET 开发服务器
【发布时间】:2010-12-16 08:40:36
【问题描述】:

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

我发现this 的帖子已启动但没有解决方案。

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

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

【问题讨论】:

标签: asp.net cross-browser virtual-pc remote-access


【解决方案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://stackoverflow.com/a/12008223/1552178

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

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

    【讨论】:

    • 当然这应该是最佳答案,每个人都已经安装了这个。谢谢。 (您必须允许在提琴手内部进行远程连接)。
    【解决方案6】:

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

    1.第一步

    你必须下载Fiddler

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

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

    重启 Fiddler。

    2。第二步

    之后,在网络上的另一台电脑或虚拟机中,打开 Internet Explorer-> Internet 选项-> 连接选项卡-> 局域网设置-> 选中“使用代理服务器”为您的局域网" :

    1. 地址是您的 DEV 机器的 IP 地址。
    2. 并把端口 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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-10
        • 1970-01-01
        • 2016-07-04
        • 1970-01-01
        • 2013-08-24
        • 2016-04-30
        • 2023-03-21
        • 1970-01-01
        相关资源
        最近更新 更多