Internet Explorer を使用したランタイム アプリケーションの配置

更新 : 2007 年 11 月

Web ベースのアプリケーションは、Microsoft Internet Explorer 5.5 以降を使用して、アセンブリをダウンロードし、実行できます。Web ベースのアプリケーションは、標準のポータブル実行可能 (PE) ファイル (.exe または .dll) の両方をダウンロードできます。ダウンロードするアセンブリ、アセンブリの場所、および追加情報を提供する構成ファイルの場所についての情報は、HTML ドキュメントで提供できます。

アプリケーションの配置に Internet Explorer を使用する利点は、アセンブリが使用時にだけダウンロードされることです。アプリケーションが複数のアセンブリで構成される場合、アセンブリは参照されるときにだけダウンロードされます。この自動処理によって、アプリケーション全体をダウンロードする必要がなくなり、クライアントは使用するコードだけを受信するので、アプリケーションの初期ダウンロードが短時間で済みます。

a7as3z1d.alert_note(ja-jp,VS.90).gifメモ :

通常、インターネットから配置されるコードには、セキュリティ ポリシーによって既定のインターネット アクセス許可が設定されています。これにより、コードは限定された機能セットだけを実行できます。既定のインターネット セキュリティ ポリシーの詳細については、「セキュリティ ポリシー」を参照してください。

Web ベースのアプリケーションの設定

既定では、共通言語ランタイムは、Internet Explorer でアクセスされるサイトごとに、アプリケーション ドメインを作成します。アプリケーション ドメインは、プロセス内で実行される個別のアプリケーションを分離します。アプリケーション ドメインがどのように作成されるかが、そのドメイン内でアプリケーションを実行する場合にアセンブリに与えられるアクセス許可に影響します。各アプリケーション ドメインには、URL 証拠とアプリケーション ベースが関連付けられており、構成ファイルを持つ場合もあります。

URL 証拠

URL 証拠は、Microsoft Internet Explorer 5.5 以降を使用して配置されるアプリケーションに割り当てられます。ランタイム ホストは、この URL 証拠を使用して、セキュリティ ポリシーに基づく決定を行います。URL 証拠は、アプリケーションを構成するアセンブリと、アプリケーションが作成するアプリケーション ドメインの両方に関連付けられますが、URL 証拠の形式はそれぞれ異なります。アセンブリの場合、URL 証拠はメイン アセンブリ ファイルの完全 URL パスです。たとえば、アプリケーションを構成するアセンブリの URL 証拠は http://www.code.microsoft.com/myApp/myAssembly.dll のようになります。アプリケーション ドメインの URL 証拠はサイトの証拠と同じです。前の例では、アプリケーション ドメインの URL 証拠は http://www.code.microsoft.com/ になります。

a7as3z1d.alert_note(ja-jp,VS.90).gifメモ :

アプリケーション構成ファイルの格納場所は、アプリケーション ドメインの URL 証拠には影響しません。

構成ファイル

Internet Explorer を使用して配置される Web アプリケーションでは、アプリケーション構成ファイルに格納された情報を使用できます。アプリケーション構成ファイルは、Web サーバー上でアプリケーションの実行可能ファイルと同じディレクトリに配置されている必要があります。アプリケーション構成ファイルは、アプリケーション構成ファイルの命名規則に従っている必要があります。アプリケーション構成ファイルの名前は、実行可能ファイルと同じ名前に拡張子 .config を付けたものである必要があります。たとえば、アプリケーションのファイル名が myApplication.exe である場合、アプリケーション構成ファイルの名前は myApplication.exe.config になります。

ASP.NET アプリケーションは、web.config ファイルを使用して構成情報を指定します。Web アプリケーションは、ASP.NET や実行可能ホストの場合とまったく同じ方法で構成情報を供給できます。Internet Explorer でホストされるアプリケーションが構成ファイルを持つ場合、構成ファイルの場所は、<link> タグの中に次の構文で指定します。

<LINK REL="CONFIGURATION" HREF="[configuration file name]"></LINK>

この例で、[configuration file name] は構成ファイルの名前です。次に例を示します。

<LINK REL="CONFIGURATION" HREF="two.dll.config"></LINK>

Web ページに構成ファイルへの <link> タグが含まれていない基本の Web アプリケーションのシナリオでは、ランタイムがサイトごとにアプリケーション ドメインを作成します。つまり、HTML ドキュメントが http://www.code.microsoft.com/myApp/mypage.htm に存在する場合、アプリケーション ドメインは、サイト全体 (http://www.code.microsoft.com) に対して作成されます。このシナリオは Web 作成者にとっては便利ですが、構成ファイルが指定されていないため、このサイトのマネージ コード アセンブリを使用するすべての Web ページが同じアプリケーション ドメインを共有します。

アプリケーションがアプリケーション構成ファイルから情報を読み取る場合は、次のような設定が必要です。

  • 構成ファイルを実行可能ファイルと同じ場所に配置します。

  • Web サイトへの匿名アクセスを許可し、構成ファイルが格納されたディレクトリでスクリプトの実行を許可する必要があります。

より複雑なシナリオになると、互いに分離する必要がある異質のアプリケーションを同じサイトで 2 つ以上実行する場合もあります。このような分離を実現するには、Web ページ作成者は、HTML 文書内に構成ファイルを指定する必要があります。同じ構成ファイルをポイントするページはすべて、同じアプリケーション ドメインに作成します。この方法で、構成ファイルごとにアプリケーション ドメインを作成できます。

a7as3z1d.alert_note(ja-jp,VS.90).gifメモ :

<link> タグに相対パスが含まれている場合、ランタイムは、構成ファイルをポイントする URL 内の文字 '#' をサポートしません。

アプリケーション ベース

ApplicationBase は、ランタイムがアセンブリを検索するときにルート ディレクトリとして使用するディレクトリを指定する、アプリケーション ドメイン プロパティです。既定では、ApplicationBase プロパティは、サイトのルート (wwwroot など) であると見なされます。アプリケーション構成ファイルが存在する場合は、ApplicationBase はアプリケーション構成ファイルの場所になります。構成ファイルには、そのアプリケーション ドメインで実行されるコードに固有の構成情報を含めることができます。マシン上で複数のサイトが定義されている場合、ApplicationBase の既定値はポート 80 で定義されている "既定の" サイトになります。

マネージ実行可能ファイルのダウンロード

<object> タグを使用してダウンロードされるほとんどのアプリケーションは、Web ページに表示される UI コントロールですが、マネージ実行可能ファイルのダウンロードについては、ランタイムは次の 2 つのシナリオもサポートします。

  • ユーザーが、たとえば、次のようなマネージ .exe ファイルの URL をブラウザに入力する。

    http://www.server.microsoft.com/MyWebSite/MyApp.exe.
    
  • HTML ページに、たとえば、次のようなマネージ実行可能ファイルへのリンクを含める。

    HREF="MyApp.exe".
    

どちらのシナリオでも、ランタイムは、実行可能ファイルを実行するための新しいアプリケーション ドメインを作成します。アセンブリに対する後続の要求に対して、アプリケーション ベースは実行可能ファイルの場所に設定されます。

たとえば、次のコードは、myClass を参照します。

<object id="myCtl" 
  classid="http://www.mycode.Microsoft.com/mycode.dll#myClass"> 
</object>

<object> タグを使用して呼び出し元アセンブリを指定したときは、静的にリンクする依存アセンブリは、呼び出し元アセンブリと同じディレクトリに配置する必要があります。たとえば、myAssembly.dll を <object> タグを使用して指定し、myOtherAssembly.dll への静的参照を持つ場合、myOtherAssembly.dll は、myAssembly.dll と同じディレクトリに配置する必要があります。

a7as3z1d.alert_note(ja-jp,VS.90).gifメモ :

マネージ コード実行可能ファイルを Internet Explorer で HREF リンクを使用して配置する場合は、先頭をコマンド ライン引数にしないでください。引数が正しく実行可能ファイルに渡されません。

エラー レポート

コードのダウンロード プロセスでは、次の 2 つのレジストリ設定を使用して、Internet Explorer を使用して配置されるマネージ コード実行可能ファイルからのエラー レポートを制御します。

  • HKLM\Software\Microsoft\.NETFramework\ExposeExceptionsInCOM

  • HKCU\Software\Microsoft\.NETFramework\ExposeExceptionsInCOM

エラーのレポート方法を指定するために、どちらの設定でも次の値を使用します。

説明

1

エラー情報は、標準出力ストリームに送信されます。

2

エラー情報は、ユーザーに表示されます。

3

エラー情報は、標準出力ストリームへの送信と、ユーザーへの表示の両方になります。

Internet Explorer を使用して配置するマネージ コードをデバッグするときは、これらの設定の値を使用して、コードのダウンロード エラーに関する詳細情報を検索できます。たとえばこれを使用すると、例外がスローされたときのスタック トレース情報を表示でき、Internet Explorer に用意されている、開発者向けではなくエンド ユーザー向けのエラー レポート機能に頼る必要がありません。

Internet Explorer でホストされるコントロール

Internet Explorer を使用して、.NET Framework で作成したコントロールをホストできます。コントロールは、拡張子が .dll であるライブラリに格納されている必要があります。Windows フォーム コントロールをスタンドアロンとして使用し、Internet Explorer でホストするコントロールとしても使用するには、どちらの場合でも機能するようにライブラリの拡張子は .dll である必要があります。

a7as3z1d.alert_caution(ja-jp,VS.90).gif重要 :

Internet Explorer によってホストされるすべてのマネージ コントロールは、コンピュータにインストールされている最新バージョンの共通言語ランタイムを使用します。これは、コントロールがビルドされたバージョンで実行されない場合があり、コントロールが本来意図されているセキュリティ ポリシーで実行されないことがあることを意味します。共通言語ランタイムの新しいバージョンでマネージ コントロールを実行する前に、ランタイムの新しいバージョンに合わせてセキュリティ ポリシーを更新する必要があります。これはすべてのセキュリティ ゾーンに適用されますが、ダウンロードしたマネージ実行可能ファイルには適用されません。

a7as3z1d.alert_note(ja-jp,VS.90).gifメモ :

マネージ コントロールを読み込むとき、<object> 要素の classid 属性値の最大長は、256 文字 (MAX_PATH) です。長さが最大長よりも長くなると、コントロールでは読み込みが実行されませんが、エラーが生成されません。たとえば、次の classid 属性値は、許容できる長さです。

<object id="myCtl" classid="http://www.example.com/mycode.dll#myClass">

a7as3z1d.alert_note(ja-jp,VS.90).gifメモ :

セキュリティ上の理由から、HTML ページで <object> タグとファイル アクセス プロトコルを使用したマネージ コントロールはサポートされていません。たとえば、次に示す <object> タグはサポートされていません。

<OBJECT classid="file:///c:/control.dll#control">

依存アセンブリの検索

ランタイムが Web ベース アプリケーションの依存アセンブリの検索に使用するプロセスは、非 Web ベース アプリケーションに対して使用するプロセスに似ています。ランタイムは ApplicationBase からの相対パスを使用してプライベート依存アセンブリを検索します。プライベート アセンブリを検索する場合、ランタイムは ApplicationBase、構成ファイル内の <private_binpath> タグ、および検索規則を組み合わせて使用します。また、ランタイムは呼び出し元アセンブリが配置されている URL をチェックして、依存アセンブリがないかどうかを調べます。

Microsoft Authenticode 署名によるマネージ コードへの署名

Authenticode デジタル署名を使用してファイルに署名するには、ファイル署名ツール (Signcode.exe) を使用します。厳密な名前と Authenticode デジタル署名の両方を使用してファイルに署名する場合は、最初に厳密な名前を割り当てる必要があります。Authenticode 署名を最初に割り当てると、厳密な名前が破壊されます。ファイルの署名の詳細については、「アセンブリのセキュリティに関する考慮事項」を参照してください。Visual Studio 2005 を使用したファイルへの署名については、Visual Studio 2005 ドキュメントの「配置と Authenticode 署名」を参照してください。Authenticode 署名技術の詳細については、プラットフォーム SDK ドキュメントの「Introduction to Code Signing」を参照してください。

参照

概念

.NET Framework アプリケーションの配置シナリオ

アセンブリのセキュリティに関する考慮事項

ランタイムがアセンブリを検索する方法

参照

ファイル署名ツール (Signcode.exe)