試用情境
當部署web工程的伺服器同時具有內外網IP,而且web工程需要發布在內外網環境中:即內網使用者需要通過內網IP訪問應用程式,外網使用者需要用外網IP來訪問。
部署方法
1、把web工程發布網站根目錄下,Output檔案夾即圖片伺服器發布到網站output虛擬目錄下(即:應用程式為http://[IP]/[應用程式名稱]/ 對應Output為http://[IP]/Output/ ,或者 http://[IP]:[Port]/ 對應的Output為http://[IP]:[Port]/Output/)
2、修改訪問圖片主機名稱為“../../../../../../../../../../output”,直接修改SuperMap IS.NET安裝目錄下/bin/SuperMapIS.config檔案中<options output="..\output" website="../../../../../../../../../../
output" /> ,“../”個數為10,
3、Web工程中必須設定比例尺控制,如預設的AjaxDemo工程中Default.aspx設定的<SMIS:MapScale MapName="changchun" Scales="100000,50000, 25000, 12500,6250,3125,1000,500">,此處MapName改為工程地圖名字,Scales改為地圖的控制比例尺,如果設定多幅地圖設定多個SMIS:MapScale節點設定地圖名及比例尺,對於Ajaxscripts及iClient 富用戶端開發方式請參考響應的協助文檔設定地圖比例尺。
4、修改MapHandler地址為”./”。
原理:1、地圖圖片請求格式:
{http://localhost/}{ajax/World/1.562052550140726e-8/4/2/256/png/0/false/true/map.ashx?}
第一個大括弧中為MapHandler所在路徑,也就是工程發布路徑
第二個大括弧為訪問地圖緩衝路徑深度數,即有多少個“../”個數,此處為10,所以該串連的“../”數為10,此路徑可以使用httpwatch或者fiddle等工具來查看,如是httpwatch捕獲的請求資訊:
2、調試過程中需要注意的問題:
1、修改了之後重啟地圖伺服器,IIS伺服器。
2、清除IE緩衝
3、web工程緩衝(預設在C:\Windows\Microsoft.NET\Framework\v2.0.50727
\Temporary ASP.NET Files目錄下,名字為工程名)。
4、不斷調整../的個數,這個個數根據具體環境會有差異,一般根據上面地圖請求格式後面的訪問地圖緩衝路徑深度數,根據具體情況會有差別。
這兩天有同事發現新的解決這個問題的思路比上面快捷多了,列出方法如下:
1、修改maphandler地址為"./".
2、開啟SuperMap IS.NET的安裝目錄bin檔案夾下的SuperMapis.config檔案中修改website=" http://localhost/is/output"為website="/is/output",然後重啟一下iis及地圖伺服器。
按照上面兩種思路在跟客戶解決問題過程中發現有一些情況還是需要注意:
1、如果工程網站在一個連接埠下,而圖片伺服器即:output在另外一個連接埠下這種情況不行,盡量在webgis工程所屬的網站上建立一個is /output虛擬目錄,或者直接把工程發布到預設網站上面。其實這個在那個網站無所謂,只要歸於不同的應用程式集區即可為不同的虛擬目錄設定不同的應用程式集區,即可充分用於iis的效能。
2、maphandler修改為./ 之後訪問不到,這種情況下可以用指令碼代碼判斷訪問網站的地址,是內網地址這地圖初始化時候把maphandler地址改為內網地址,如果是外網則改為外網地址。