远程计算机无法连接到 Visual Studio Web 服务器

Posted

技术标签:

【中文标题】远程计算机无法连接到 Visual Studio Web 服务器【英文标题】:Remote machines cannot connect to Visual Studio web server 【发布时间】:2010-09-18 05:30:05 【问题描述】:

我记得当 MS 开发 Cassini 时 - 我相信他们将其引入 VS 05/08,所以我认为这是一个 Cassini Web 服务器问题。

我正在使用带有 Visual Studio 2008 的 Windows XP,当我想使用多个浏览器和多个操作系统测试网页/样式时,发现它非常不方便。现在我必须在我们的服务器上部署代码,如果需要进行任何更新,那么这个过程就会变得相当耗时。由于我使用的是 XP/IIS 5,所以不能选择使用 IIS。在 XP 上使用 IIS 需要一个额外的项目前缀,这会破坏所有链接、css 等。这也是一个非常快速的开发项目,所以像根目录这样应该被拉出到配置的东西不是,我很喜欢董事会使用这种类型的解决方案,但未在此项目中实施。 MS 不允许在某处允许远程连接的简单标志似乎也很粗略 - 它非常简单 (http://www.devx.com/dotnet/Article/11711) 但我不想重新编译 Cassini。

有谁知道如何让 Visual Studio 2008 中的集成开发 Web 服务器被其他计算机看到?这样可以节省大量时间。

【问题讨论】:

【参考方案1】:

刚刚想出了一个好的解决方案: 1)在开发机器上设置提琴手 2) 设置远程机器使用 fiddler 作为代理 3) 在远程机器上浏览到http://localhost.:[insert your dev port # here]/

【讨论】:

fiddler2.com/fiddler/help/reverseproxy.asp 步骤 2 已确认可使用 VSDS。我的规则的一个例子是: if (oSession.host.toLowerCase() == "192.168.1.138:8888") oSession.host = "localhost:35810"; 网址更改为fiddler2.com/documentation/Configure-Fiddler/Tasks/… 更好的是,一个非常小的应用程序,无需安装(我的 GUI 版本似乎已关闭,但命令行版本有效):quantumg.net/portforward.php 看起来你只需要运行它在开发机器上一次:只需要转发到 127.0.0.1 和 HTTP 主机名无关。【参考方案2】:

很抱歉回答了一个老问题,但它在 Google 中排名,所以我决定加上我的 2 美分:

在 VS 2010 中,有一个选项可以使用“IIS Express”而不是 VS Development Server,它默认允许远程连接。

更新:当前版本的 IIS Express 默认情况下不允许外部连接,请参阅 HERE 了解如何启用远程连接。

【讨论】:

刚刚安装了 IIS 7.5,但它默认不接受外部连接。所以至少对我来说,这是行不通的。 IIS Express 默认情况下允许外部连接。为了允许外部访问,请在此处查看答案:***.com/questions/5433786/…【参考方案3】:

您可以使用端口转发实用程序侦听端口(例如 5000),然后将所有流量中继到 Visual Studio 的端口。

解决方案在文章Accessing the Visual Studio ASP.NET Development Server from iPhone中进行了描述。

我根据上面的文章写了一篇博文,总结了它,Accessing Visual Studio Web Server remotely。

【讨论】:

【参考方案4】:

Microsoft 不允许这样做 - 他们不希望您使用 Cassini 部署您的应用程序。 It's compiled right into its code.

话虽如此,我经常想知道他们是否只是检查“localhost”的 url。也许编辑远程机器的 HOSTS 文件并将“localhost”重定向到 cassini 机器可以欺骗它?值得一试...在 Windows 中,您可以在此处找到 HOSTS:

C:\Windows\system32\drivers\etc

你可以进入你的 web 项目设置,让它使用本地 IIS 作为主机,然后它就可以正常工作了。

【讨论】:

嘿绝地 - 我忘了提到我不能使用 IIS,因为我在 5 上,这会导致根目录不同,破坏所有链接和样式 我不知道 VS 的任何 IIS 5.1 兼容性问题 - 你确定不能解决这个问题吗?【参考方案5】:

为了解决您的链接断开、文件路径等问题。使用相对链接。

此外,ASP.NET 服务器控件中的 URL/路径属性/值中的标记“~/”(不带引号)将自动替换为您的应用程序所在的 IIS 子文件夹的真实路径。

要使此解决方案正常工作,您正在开发的 Web 应用程序的根必须是 IIS 应用程序(请参阅 Web 部分的 Web 项目属性页,您可以在其中找到创建 IIS 应用程序的链接或按钮)。

Google for IIS Web 应用程序根目录。

【讨论】:

【参考方案6】:

我在本地机器上针对多个浏览器进行测试。本地 Web 服务器不关心您是否使用 Opera/Safari/Firefox/IE 连接到它。通常,我在调试器中启动项目,它也启动 IE,然后将 IE 中的 URL 剪切/粘贴到我正在测试的任何浏览器中。通常,Cassini 选择的端口不会经常更改,因此很多时候 URL 已经存在于我的浏览器历史记录中。 Web 服务器运行后,您甚至可以停止调试器并继续在备用浏览器中进行测试。

对于其他 MacOS,我通常使用 IIS6 发布到 QA 服务器。在使用 IE/Firefox/etc 进行测试后,我发现很少有这种情况。在 WinXP 上,Mac 上存在问题。我没有专门测试 Linux 的变体。

【讨论】:

他说的是在一个开发框内将IE加载到像Virtual PC这样的VM中,然后从VM内的浏览器连接到主机框(您的实际计算机)上的localhost。调试时更加方便,因为您留在 IDE 中进行调试,而不必一遍又一遍地部署。 @Chris - 我的解决方案是尝试在我的开发盒上使用多个浏览器进行测试,以测试各种引擎。我在这方面取得了很好的成功,而无需求助于虚拟机。一旦基本设置好,我就会部署到 QA(无论如何我都会这样做),并让其他拥有不同浏览器/操作系统组合的人对其进行锤击。我可能被宠坏了,因为我的应用程序通常是内部的,而且我们在升级浏览器方面做得很好,所以我不必经常担心旧版浏览器。必须测试多个浏览器版本可能会很棘手,我可以看到设置不同版本的 VM 有什么用处。 是的,这篇文章不适合你。你不能在没有虚拟机的情况下在本地合法地测试多个版本的 IE,所以关键是让虚拟机连接方便。有多种方法可以并行安装克隆,但引擎并不完全相同,隐藏了用户会看到的错误。【参考方案7】:

尝试将 .Net 绑定到 127.0.0.1 而不是 localhost,在我遇到的某些情况下,它确实会影响分辨率。 我希望我一直都知道这会为我节省几个小时。

我也见过使用 Privoxy,它可能更快,但 Fiddler 更容易,并且不需要设置环回。

无论如何,我在 localhost:15709 上设置了 VS,在 Fiddler 中设置了这个: if (oSession.host.toLowerCase() == "webserver:15709") oSession.host = "localhost:15709";

所以我只需在我的虚拟机中输入 webserver:15709 就可以了。

【讨论】:

【参考方案8】:

使用 Fiddler 作为反向代理,开发 Web 服务器可以获取请求,但它变成了内部请求(127.0.0.1),这在我的情况下没有用。

我正在尝试捕获远程请求以在那里进行调试。

【讨论】:

为什么这些细节很重要?这听起来像是您可以处理每个环境而不是查看 IP。【参考方案9】:

WebMatrix 是另一种选择。

【讨论】:

以上是关于远程计算机无法连接到 Visual Studio Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 Visual Studio Code 远程 SSH 连接到 GCP VM

Visual Studio 中的远程调试无法连接

无法连接到 Visual Studio 中的 SQL Server

连接到远程 SQL 服务器数据库 Visual Studio 2017 时出错

Azure Front Door Visual Studio 远程调试

无法再使用 Visual Studio 2008 连接到 Visual Studio Team Services