ArcGIS API For Silverlight中关于跨域错误的解决办法
2011-06-21 14:01 何朝阳 阅读(860) 评论(0) 编辑 收藏 举报最近在一个ArcGIS API For Silverlight项目中,出现无法访问本地服务的问题,但是可以使用arcgisonline服务,困扰了好久,一直没得以解决。
今天突然发现直接在浏览器中输入“http://localhost/ArcGIS/rest/services/ChinaData/MapServer?f=jsapi”可以访问该服务:
也就是说本机发布的rest服务是没有问题的,于是继续尝试找出可能的问题,在图层初始化的时候发现图层为空,对图层添加一个事件:InitializationFailed,当图层添加失败的时候会出发这个事件:
<esri:ArcGISDynamicMapServiceLayer Url="http://localhost/ArcGIS/rest/services/ChinaData/MapServer" ID="BaseLayer" InitializationFailed="ArcGISDynamicMapServiceLayer_InitializationFailed" />
code-behind中添加ArcGISDynamicMapServiceLayer_InitializationFailed事件:
private void ArcGISDynamicMapServiceLayer_InitializationFailed(object sender, EventArgs e) { Layer layer = sender as Layer; MessageBox.Show(layer.InitializationFailure.Message); }
结果弹出图层初始化失败的错误原因:
原来,和flash一样,Silverlight中对跨域(cross domain)访问做了严格的限制,后参照《使服务跨域边界可用》一文,将clientaccesspolicy.xml和crossdomain.xml两个xml文件置于“C:\inetpub\wwwroot”目录中即可,至此,困扰已久的问题终于解决了!
附xml文件下载:wwwroot.rar
版权声明:
本文原创发表于博客园,作者为何朝阳,博客http://www.cnblogs.com/hechaoyang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
本文原创发表于博客园,作者为何朝阳,博客http://www.cnblogs.com/hechaoyang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。