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

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間