先上一个类,如下:
public class BaseClass { public static string getFullUri(string oldUriString) { string newUriString = oldUriString; //处理相对地址============================================================ if (newUriString[0] == '/') { string shost = System.Windows.Browser.HtmlPage.Document.DocumentUri.Host; int sport = System.Windows.Browser.HtmlPage.Document.DocumentUri.Port; newUriString = "http://" + shost + (sport == 80 ? "" : ":" + sport.ToString()) + newUriString; } if (!newUriString.StartsWith("http")) { string shost = System.Windows.Browser.HtmlPage.Document.DocumentUri.Host; int sport = System.Windows.Browser.HtmlPage.Document.DocumentUri.Port; string slocal = System.Windows.Browser.HtmlPage.Document.DocumentUri.LocalPath; slocal = slocal.Substring(0, slocal.LastIndexOf('/')); Uri turi = new Uri("http://" + shost + (sport == 80 ? "" : ":" + sport.ToString()) + slocal + "/" + newUriString, UriKind.Absolute); newUriString = turi.ToString(); } return newUriString; } } <esri:Map> <esri:Map.Layers> <esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="/arcgis/rest/services/HSDQ/MapServer/"/> </esri:Map.Layers> </esri:Map> public MainPage() { InitializeComponent(); ArcGISTiledMapServiceLayer layer = myMap.Layers["BaseLayer"] as ArcGISTiledMapServiceLayer; layer.Url = BaseClass.getFullUri(layer.Url); }
这样就可以解决内网IP地址访问和外网IP地址同样访问的问题。