2011-02-23 137 views
0

我有一个ASP.NET应用程序托管在局域网内。应用程序主机可以访问互联网,而局域网客户端则不可以。在内部网站上显示互联网内容

有一个要求,我必须在互联网(公共网络)地址的IFrame中显示具有丰富内容(图片)的网页。

但是,由于客户端上没有可用的互联网访问,因此必须通过服务器完成,然后才需要向客户端提供服务。

这怎么办?

+0

如果他们没有网络连接他们如何首先浏览您的网站?如果服务器没有网络连接,那将如何为您的网站提供服务? – Hawxby 2011-02-23 08:57:41

+0

与网络连接我的意思是访问公共网络或互联网。 – 2011-02-23 09:48:26

回答

0

您可以使用应用代码中的HttpWebRequestHttpWebResponse查询另一台服务器,然后通过将其输出到Response来重新提供响应。要复制实际的网页,您还需要解析所有嵌入式资源(脚本,图像等)并再次从主机服务器请求它们,并创建一个架构,以便可以从应用程序重新传输它们。也就是说,如果您简单地回应了页面请求的响应,则由于客户端无法访问,所有资源都不会加载。您需要将页面中的这些URL重新写入服务器上的某些URL,然后再从真实服务器请求这些URL。听起来对我来说很痛苦,但技术上可行。

我认为创建某种代理可以让你的客户通过门户直接访问网站更容易。 (我上面提出的基本上是一个专门的代理)。如果您可以直接使用IIS,则可以创建一些可用作此目的的更直接代理。我猜你必须有一个很好的理由说明为什么你需要这样做,比如,这些是在零售商店的公共终端,你显然不希望你的顾客从那里购物。:)

+0

类似于我想过的一些事情。我在想可能会有一些网站downlrrr像免费api这可能会帮助我在本地下载页面。编写像功能一样的下载程序是一件很痛苦的事情,成本不值得花时间和精力。 – 2011-02-28 18:55:31

+0

我在创建排序代理时所获得的是,您可以创建一个ISAPI处理程序来拦截对该站点的所有请求,并有条件地重定向它们。因此,您的代码可以通过简单地将异地资源替换为'someurl/originalurl/resource.xxx'来提供页面 - 处理程序将使用'someurl'将其标识为代理请求,然后将请求重定向到异地服务器,捕获响应并将其传输到客户端。在决定非现场网址确定后。我确信有些细节我没有想到,但基本的实施应该是直截了当的。 – 2011-02-28 19:24:30