【问题标题】:Is There a Way to Make Remote Calls to ASP.NET Development Web Server?有没有办法对 ASP.NET 开发 Web 服务器进行远程调用?
【发布时间】:2010-10-13 18:12:51
【问题描述】:

知道一般来说这个是做不到的,那就是让另一台PC远程调用托管在ASP.NET DEvelopment Web Server下的站点(一般只能使用localhost:port开始吧)。

但我想知道是否有人看到或知道绕过它的方法?我是办公室的 RESTful API 开发人员,我希望 PHP 人员在我的机器上测试 API,以便我可以连接 Visual Studio 2005 调试器,并且可以更轻松地发现问题。

主要问题是,我的机器是 Vista 机器,不幸的是,我开发的 API 不能在 IIS7 下工作,即使是经典应用程序池模式(这消除了在本地 IIS 上托管它们的可能性)。

或者,有没有办法在另一台机器上使用 IIS6 来满足我的需求?

更新

根据我得到的建议,经过多次试验和错误,我能够让 Squid 充当反向代理,并完全按照我的意愿去做。我已经在博客上写了http://www.ashleyangell.com/index.php/2009/03/configuring-a-basic-reverse-proxy-in-squid-on-windows-website-accelerator/,以防其他人也想做同样的事情。

【问题讨论】:

  • 您可以远程调试到具有 IIS6 的计算机。查看这篇关于如何设置的博客文章:blogs.iis.net/brian-murphy-booth/archive/2008/05/23/… 这是 vs2005 的链接:aspnet2holes.blogspot.com/2006/11/…。我仍然建议检查 2008 年的,只是它有一些额外的 cmets。
  • @Ash 添加了 vs 2005 的链接
  • 所以这个选项不起作用,因为代码需要复制到托管 IIS 的服务器上。更不用说办公室在域中的安全问题。
  • 您链接的博客条目已不存在。
  • 很抱歉 - 我移动了我的博客并删除了“博客”子域。它现在已修复。

标签: asp.net iis asp.net-development-serv


【解决方案1】:

你不能在Classic Application Pool mode 中运行 IIS7 吗?

开发网络服务器仅限于本地主机,您要么需要反编译并重新编译它,要么在您的机器上设置某种代理。

关于一个不相关的话题:尽管 Win2003 Server SP2 R2 应该支持到 2012 年 3 月,但也许应该将 IIS7 支持添加到您的应用程序中,以确保您也可以在 2008 Server 上运行。

【讨论】:

  • 已经尝试过了,虽然明显的限制不好,但由于我的雇主限制,目前不可能。最终,我希望为我的 API 迁移到 ASP.NET MVC 框架(甚至更好,Ruby),但这还不可能。
  • 如何设置代理?我认为它需要一个反向代理,但这是如何完成的?
  • 好问题,我自己从来没有设置过(我只知道它们确实存在),但是我看到了一篇关于编写一个的文章(具有讽刺意味的是在 IIS 上运行的):codeproject.com/KB/web-security/HTTPReverseProxy.aspx
  • 我不确定代理是否会起作用,即 IP 数据包到达的级别是否足够低,以使 Web 服务器显示为本地。
  • 代理不应该是透明的吗?自从我通过 Reflector 运行 Web 服务器已经有一段时间了,但我认为检查是纯粹基于 IP 的,所以我认为这应该可以工作。但如前所述,永远不要自己设置,所以这只是理论。
【解决方案2】:

将 IIS 7 切换到经典管道不能解决您的兼容性问题? VS 2005 有一个远程调试器,之前的许多版本也是如此。

【讨论】:

  • 我尝试将我的项目设置为“使用 IIS Web 服务器”,但它不允许我 - 告诉我该功能仅在本地 IIS 安装上可用。 :(
  • 是否可以设置项目以便自动部署到该 IIS 机器?我以前从未做过远程调试。
  • 您需要在服务器上安装并运行远程调试器,然后使用 VS 调试菜单中的“附加到进程”功能进行连接。
  • 如果您的项目是标准网站或 Web 应用程序,可以,您可以从 Visual Studio 部署到服务器。
【解决方案3】:

您可能想查看 UltiDev 的 Cassini web server 版本。他们采用了 Microsoft 开源 Cassini Web 服务器并对其进行了增强,以允许远程连接等。

您可以将 VS 附加到该进程,并观察从 PHP 应用程序调用的 RESTful API,正如您在上面描述的那样。

【讨论】:

  • 我设法让 Cassini 运行我的 Web 应用程序,并且办公室中的其他 PC 可以访问它,这正是我想要的,但我无法让它进入 Web 应用程序的调试 - 符号不会加载所以我无法调试。我尝试附加到运行该站点的进程,但它不会让我这样做。
【解决方案4】:

是的! :D

我也在四处寻找以克服这个限制,偶然发现了以下文章:

http://eeichinger.blogspot.com/2009/12/sniff-http-traffic-with-aspnet.html

我自己还没有尝试过,但看起来又快又简单(尽管有些人可能会说这是硬核)。
顺便提一句。我建议你看看Erich Eichinger's blog 的其他帖子,因为这里有更多真正有价值的东西。

【讨论】:

    【解决方案5】:

    【讨论】:

    • 用 Wayback 更新了链接
    • Wayback 链接对您不起作用吗?我刚刚尝试过,它显示了文章的正确副本。
    【解决方案6】:

    我刚刚尝试成功http://code.activestate.com/recipes/483732-asynchronous-port-forwarding/。这是一个仅转发流量的 Python 脚本。

    假设您的开发服务器运行的机器是192.168.42.42 并且开发服务器在端口12345 上,使用命令行参数运行脚本(在同一台机器上)

    -l 192.168.42.42 -p 8000 -r 127.0.0.1 -P 12345
    

    然后您可以从另一台机器通过http://192.168.42.42:8000 访问服务器。

    请务必按照 Dwight Walker 在 cmets 中的说明更改 sender.handle_close

    def handle_close(self):
        self.close()
        if len(self.receiver.to_remote_buffer) == 0:
            self.receiver.close()
    

    【讨论】:

      【解决方案7】:

      只需使用简单的 Java TCP 隧道。下载这个 Java 应用程序,然后将流量返回。无需搞乱 IIS!

      http://jcbserver.uwaterloo.ca/cs436/software/tgui/tcpTunnelGUI.shtml

      在命令提示符下,您将像这样运行 java 应用程序...假设您希望在端口 80 上进行外部访问,并且您的标准调试环境在端口 1088 上运行...

      java -jar tunnel.jar 80 本地主机 1088 (也在这里回答:访问 VM 外部的 asp.net 开发服务器)

      【讨论】:

        【解决方案8】:

        基本上我花了 5 个小时来完成这项工作,最终如果您想要 5 分钟的修复,请点击此处:

        1. Port forward incoming traffic to your local ip on your network
        TCP Any -> 3127-3128
        TCP Any -> 80-81
        TCP Any -> 8080
        TCP Any -> 8000
        TCP Any -> 8888
        to
        192.1681.1.3 (the local ip of the machine running .NET Dev server.)
        
        2. Download SPI Port Forward
        
        3. Heres the tricky part - Setup 2 forwarding rules as follows:
        Local port: 8080 Remote: localhost Remote port 8080
        Local port: 8080 Remote: localhost Remote port: .NET Dev server port
        
        Without that second rule the .NET dev server wont serve the page
        
        4. now visit your public IP address at port 8080 -- and you got it
        

        Z

        【讨论】:

        • 这似乎不起作用。您不能将两个本地端口 (8080) 绑定两次。也许这是一个错字?
        • SPI PortForward 将允许多个端口转发启用循环 :) 这就是它的工作原理..
        【解决方案9】:

        这篇文章帮助了我: http://staticvoidmain.cognitioab.se/index.php/2013/01/remote-debugging-asp-net-development-server-with-spi-port-forward/ 它建议在您的开发人员机器上使用第三方应用程序作为代理(有点)。所以你连接到这个应用程序,它会将你的所有请求转发到开发服务器。像魔术一样工作:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-10
          • 2014-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-05
          • 1970-01-01
          相关资源
          最近更新 更多