ArcGIS for Silverlight:RESTエンドポイントに接続しようとしたときのセキュリティ異常の解決策について

6316 ワード

Silverlightドメイン間ポリシー
リモートサーバからデータにアクセスするには、リモートサーバがWebサーバのルートディレクトリの下にclientaccesspolicyを配置する必要があります.xmlファイル(c:inetpubwwwrootなど).ArcGIS for Silverlightは、Microsoft Silverlightプラットフォームをベースに構築されています.セキュリティ上の理由から、Silverlightアプリケーションが属するWebドメイン以外のデータへのWebブラウザのアクセスは許可されません.ただし、サーバから権限が付与されている場合、Silverlightアプリケーションはドメイン間でデータをロードできます.リモートサーバにclientaccesspolicyが配置されている場合xmlファイルで、Silverlightがこのリモートサーバ上のサービスに接続できるようにすると、ドメイン間ロードが可能になります.
詳細については、トピックドメイン間境界でサービスを使用可能にするを参照してください.
Clientaccesspolicyについてxmlファイルの構造と機能の詳細は、トピックSilverlightでのネットワークセキュリティアクセス制限を参照してください.
たとえば、ArcGIS Onlineで使用されているポリシーファイル:http://services.arcgisonline.com/clientaccesspolicy.xmlを表示できます.
clientaccesspolicy.xml 
 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>

crossdomain.xml 
1 <?xml version="1.0"?>
2 <cross-domain-policy>
3   <allow-access-from domain="*" header=”*” />
4 </cross-domain-policy>

また、Silverlightでローカルで配布された地図サービスにアクセスする場合は、動的レイヤータイプ:ArcGISDynamicMapServiceLayerにアクセスし、Url="http://localhost/arcgis/rest/services/asdff/MapServer「イベントを追加:InitializationFailed=」ArcGISDynamicMapServiceLayer_InitializationFailed」というイベントのコードは次の通りです.(地図サービスにアクセスしてエラーが発生した場合、エラーの原因をタイムリーに報告することができ、エラーの原因を知ることができ、エラーを変更するのに便利です.)
1 private void ArcGISDynamicMapServiceLayer_InitializationFailed(object sender, EventArgs e)
2  {
3     Layer layer = sender as Layer;
4     MessageBox.Show("" + layer.InitializationFailure.Message);
5  }

すると、本異常処理は成功しました!