2011-02-23 196 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