經過這幾天的折騰終於將環境配置完成,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>
成功,完成調用。