远程计算机无法连接到 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 中的 SQL Server
连接到远程 SQL 服务器数据库 Visual Studio 2017 时出错