经过这几天的折腾终于将环境配置完成,VS2010, SDE,ArcGIS Server,准备利用silverlight API 做一个WebGIS系统,在此记录过程的问题。
1.初次接触silverlight,调试花费不少时间,由于安装的是silverlight 3.0,而runtime是4.0版本的,在启用silverlight 调试的时候会出现版本不匹配,于是乎,google之,设置相应.web项目的web属性,禁用SilverLight 调试器即可。
2.silverlight 访问 ArcGIS发布的REST地图服务过程中会出现跨域调用问题。(网上摘录)
通常,如果基于 Silverlight 的应用程序检测到其请求是一个跨域请求,将首先在 Web 服务的应用程序根处查找 Silverlight 跨域策略文件 (clientaccesspolicy.xml)。如果这个请求导致"404 未找到"或其他错误,应用程序将在应用程序根处查找 Flash 跨域策略文件 (crossdomain.xml)。不允许重定向跨域策略文件。此外,跨域策略文件保持对应用程序会话有效。
现在知道了只要在网站中部署一个跨域策略文件,就可以解决Silverlight跨域请求问题。跨域策略文件要放在哪里?
注意:跨域策略文件必须也只能放在网站的放置在根目录下。
我配置的是IIS服务器,将两文件crossdomain.xml和clientaccesspolicy.xml放置在C:/inetpub/wwwroot目录下,
1 <?xml version="1.0" encoding="utf-8" ?> 2 <cross-domain-policy> 3 4 <!-- 5 <allow-access-from domain="*" />--> 6 <!--<allow-access-from domain="10.48.194.53"/> 7 <site-control permitted-cross-domain-policies="all"/> 8 <allow-http-request-headers-from domain="*" headers="*"/> 9 <allow-access-from domain="*"/>--> 10 <allow-access-from domain="*" secure="true" /> 11 <allow-access-from domain="10.48.194.53"/> 12 <site-control permitted-cross-domain-policies="all"/> 13 <allow-http-request-headers-from domain="*" headers="*"/> 14 15 </cross-domain-policy>
1 <?xml version="1.0" encoding="utf-8" ?> 2 <access-policy> 3 <cross-domain-access> 4 <policy> 5 <allow-from http-request-headers="*"> 6 <domain uri="*"/> 7 <domain uri="http://*"/> 8 </allow-from> 9 <grant-to> 10 <resource path="/" include-subpaths="true"/> 11 </grant-to> 12 </policy> 13 </cross-domain-access> 14 </access-policy>
重启IIS服务,在silverlight 中调用REST地图服务,
Grid x:Name="Layout" Background="White"> <esri:Map x:Name="MyMap" > <esri:ArcGISDynamicMapServiceLayer ID="mylayer" Url="http://localhost/ArcGIS/rest/services/mymap/MapServer"/> </esri:Map> </Grid>
成功,完成调用。