.NET TIPS

[Silverlight 2]ASP.NET開発サーバでclientaccesspolicy.xmlを利用するには?

デジタルアドバンテージ 遠藤 孝信
2009/11/12

 SilverlightアプリケーションやWebサービスをVisual Studioで開発する場合、デフォルトでは、それらは「ASP.NET開発サーバ」上でデバッグ実行される。

 従って、Silverlightアプリケーションと、それがアクセスするWebサービスをそれぞれVisual Studioで構築し、両方を実行した場合、それぞれのURLは例えば次のようになるが、これらは同じドメイン(この場合にはlocalhost)であっても、ポート番号が異なるためにクロスドメイン・アクセス(=別ドメインへのアクセス)となってしまう。

Silverlightアプリケーション(をホストしているページ):
http://localhost:59496/SilverlightApplication1TestPage.aspx

Webサービス:
http://localhost:59102/Service1.asmx

 このため、実行時にはSilverlightアプリケーション側で、CommunicationException例外(System.ServiceModel名前空間)が発生してしまい、Webサービスを正しく呼び出すことができない。これは、それが配置されているドメインにしかアクセスできないという制限がSilverlightアプリケーションに課せられているためだ。

clientaccesspolicy.xmlの配置

 SilverlightアプリケーションからのWebサービスへのアクセスがクロスドメインとなってしまう場合には、Webサービス側に、別ドメインからのアクセスを許可することを明記したポリシー・ファイルを配置することで、そのWebサービスへのアクセスが可能になる。

 具体的には、clientaccesspolicy.xmlという名前のファイルを、Webサービスをホストしているサイトのドキュメント・ルートに配置すればよい。すべてのサービスに対して、ほかのすべてのドメインからのアクセスを許可する場合には、clientaccesspolicy.xmlの内容は次のようになる。

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy >
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>
clientaccesspolicy.xml
ドメイン上にあるすべてのサービスに対して、ほかのすべてのドメインからのアクセスを許可する場合の記述。

ASP.NET開発サーバへのclientaccesspolicy.xmlの配置

 さてここからが本題であるが、Webサービスが実行されるASP.NET開発サーバでclientaccesspolicy.xmlを利用する場合には、このファイルをプロジェクトの直下に作成すればよい(別で作成したclientaccesspolicy.xmlを、ソリューション・エクスプローラ内のプロジェクト部分にドラッグ&ドロップしてもよい)。

 以下は、Visual Studio 2008でclientaccesspolicy.xmlをWebサービスのプロジェクトに追加したときの画面だ。


clientaccesspolicy.xmlを追加したWebサービスのプロジェクト

 ASP.NET開発サーバでは、デフォルトでプロジェクトのルートがドキュメント・ルートとなるため、上記の設定により、ローカル・ホスト上にあるすべてのSilverlightアプリケーションは、このWebサービスにアクセスできるようになる。End of Article

カテゴリ:Silverlight 2 処理対象:Webサーバ

この記事と関連性の高い別の.NET TIPS
Windowsサービスのサービス名を列挙するには?
[Silverlight 2]JavaScriptコードからSilverlightのオブジェクトを利用するには?
[Web参照の追加]ダイアログをカスタマイズするには?
[ASP.NET]IIS 6.0(Windows Server 2003)でWebアプリケーションが実行できない場合は?
[ASP.NET]ASP.NET開発サーバのポート番号を固定するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH