Share via


ASP.NET 2.0 Web パーツおよび Windows SharePoint Services 3.0 で作業する

概要 : ASP.NET 2.0 Web パーツを作成し、Windows SharePoint Services 3.0 を使用してそれらをホストすることの利点について考えます。カスタム Web パーツを SharePoint サイトに展開する際のベスト プラクティスについて学習します。(19 印刷ページ)

Erika Ehrli、Microsoft Corporation

Jo-Anne West、Microsoft Corporation

2007 年 3 月

対象 : Microsoft Office SharePoint Server 2007、Microsoft Office SharePoint Portal Server 2003、Microsoft Windows SharePoint Services 3.0、ASP.NET 2.0

目次

  • 概要

  • Web パーツ フレームワーク

  • ASP.NET 2.0 Web パーツまたは Windows SharePoint Services 3.0 Web パーツを選択する

  • ASP.NET 2.0 Web パーツ インフラストラクチャの概要

  • Bin またはグローバル アセンブリ キャッシュを選択する

  • チュートリアル : ASP.NET 2.0 Virtual Earth Web パーツを構築して SharePoint サイトに展開する

  • まとめ

  • 追加情報

  • 謝辞

概要

Microsoft ASP.NET 2.0 では、カスタム Web パーツを構築し、Microsoft Windows SharePoint Services 3.0 を使用して構築された Web サイトにそれらを展開するのに役立つ Web パーツ インフラストラクチャを提供しています。

この記事では、ビジネス ニーズに従って ASP.NET 2.0 Web パーツまたは Windows SharePoint Services 3.0 Web パーツを選択するための推奨事項を紹介し、ASP.NET 2.0 Web パーツ インフラストラクチャを確認し、標準の ASP.NET 2.0 Web サイトと Windows SharePoint Services 3.0 の両方で機能するカスタム Web パーツを構築する方法について説明します。また、Web パーツを SharePoint サイトに追加する前に解決する必要がある、展開とセキュリティに関する考慮事項の概要を示します。最後に、Virtual Earth Web パーツを作成して SharePoint サイトに展開するサンプル コードを示します。

  • SharePoint 開発者の場合、この記事は ASP.NET 2.0 Web パーツ インフラストラクチャに関する概念を理解するのに役立ちます。カスタム Web パーツを構築する方法についても説明します。

  • ASP.NET 開発者の場合、この記事は、SharePoint サイト用にカスタム Web パーツを作成するために、お持ちの知識の目的を再設定する方法を理解するのに役立ちます。

Web パーツ フレームワーク

SharePoint Web パーツは、カスタマイズと個人用設定の両方をサポートする UI 要素です。Web パーツは、ブラウザに関する知識労働者が編集および変更できるように設計された ASP.NET サーバー コントロールです。複数のデータ ソースから取り出された情報を表示する SharePoint サイトのコンポーネントとして機能します。Web パーツを使用すると、企業ポータルおよび Web サイト上に情報ダッシュボードを作成することができます。Web パーツ ページでは、特定の Web パーツのプロパティ値を更新することにより、ニーズに応じて情報を個人用設定することができます。

Microsoft Windows SharePoint Services 2.0 および Microsoft Office SharePoint Portal Server 2003 の Web パーツ インフラストラクチャでは、マネージ コードを使用して、Microsoft SharePoint 製品とテクノロジを対象としたカスタム Web パーツを構築することができました。

ASP.NET 2.0 には新しい Web パーツ コントロール セットが含まれており、SharePoint 製品とテクノロジから独立したカスタム Web サイトに対して、サイトのカスタマイズおよび個人用設定が可能です。

Windows SharePoint Services 3.0 の Web パーツ インフラストラクチャは、ASP.NET 2.0 Web パーツ インフラストラクチャの上の層に存在します。これにより、以下の図に示すように、Microsoft Windows Server 2003 プラットフォームに対する次世代の Web パーツ インフラストラクチャを導入します。

図 1. ASP.NET 2.0 Web パーツ インフラストラクチャ

ASP.NET 2.0 Web パーツ インフラストラクチャ

ASP.NET 2.0 Web パーツまたは Windows SharePoint Services 3.0 Web パーツを選択する

Office SharePoint Server 2007 および Windows SharePoint Services 3.0 は、ASP.NET 2.0 Framework の上位に構築されています。Windows SharePoint Services 3.0 では、ASP.NET 2.0 Web パーツ インフラストラクチャを使用してマスタ ページやカスタム Web パーツ開発などの機能を活用しながら、Windows SharePoint Services の全機能 (ドキュメント サービス、イベント、ワークフロー、検索、サイト列、コンテンツ タイプなど) を提供します。

Windows SharePoint Services 3.0 用の Web パーツは、以下の 2 つの方法で構築できます。

  • カスタム ASP.NET 2.0 Web パーツを作成します。

  • SharePoint ベースの Web パーツを作成します。

可能な限り ASP.NET 2.0 Web パーツを作成してください。ただし、例外的に、SharePoint ベースの Web パーツを使用した方が利点がある場合もあります。以下の表に、ビジネス ニーズに応じて最適なオプションを選択するのに役立つ意思決定マトリックスを示します。

表 1. Web パーツを作成する際の意思決定マトリックス

カスタム ASP.NET 2.0 Web パーツを作成する

SharePoint ベースの Web パーツを作成する

  • 大部分のビジネス ニーズに対応。

  • ASP.NET 2.0 または SharePoint サイトを実行しているサイトに Web パーツを配布する場合。

  • SharePoint サイト上の ASP.NET 2.0 サイト用に作成された複数の Web パーツを再利用する場合。

  • Windows SharePoint Services 3.0 で提供されるデータまたは機能を使用する場合。たとえば、サイトまたはリスト データと共に動作する Web パーツを作成する場合。

  • SharePoint ベースの Web パーツ インフラストラクチャを使用して、一連の Web パーツを Windows SharePoint Services 3.0 に移行する場合。

  • ページ間の接続を作成する場合。

  • Web パーツ領域の外部にある Web パーツ間の接続を作成する場合。

  • クライアント側の接続 (Web パーツ ページ サービス コンポーネント) を使用して作業する場合。

  • コンテンツ データベースへのキャッシュを可能にするデータキャッシュ インフラストラクチャを使用する場合。

注意

Windows SharePoint Services 3.0 ソフトウェア開発キットには、Windows SharePoint Services 3.0 への Web パーツの実装方法を示す情報およびプログラミング タスクが記載されています。

ASP.NET 2.0 Web パーツ インフラストラクチャの概要

ASP.NET 2.0 Web パーツ コントロールは次世代の統合サーバー コントロールです。ユーザーはこれを使用すると、Web パーツのコンテンツ、外観、および動作を直接アプリケーション ページから個人用設定することができ、開発者や管理者の介入を要請する必要がありません。

System.Web.UI.WebControls.WebParts 名前空間には、Web パーツ コントロール セットや、Web パーツを作成するための一連のクラスおよびインターフェイスが含まれます。以下のクラスを使用すると、シンプルな Web パーツ ページを構築することができます。

  • WebPartManager: Web パーツ コントロール セットの中心的なクラス。すべての Web パーツ コントロール、機能、および Web ページ上で発生するイベントを管理します。

  • WebZone: すべてのコントロールの基本クラス。Web パーツ アプリケーション内でサーバー コントロール (Web パーツ コントロール、サーバー コントロール、およびユーザー コントロールなど) のコンテナとして動作します。

    • WebPartZone: Web パーツ コントロール セットの主コントロール。Web ページ上の Web パーツ コントロールをホストします。

    • EditorZone: Web パーツ コントロール セットの主コントロール。Web ページ上のエディタ パーツ コントロールをホストします。

    • CatalogZone: Web パーツ コントロール セットの主コントロール。Web ページ上のカタログ パーツ コントロールをホストします。

    • ConnectionZone: Web パーツと WebPartZoneBase 領域内に存在するその他のサーバー コントロールとの間でユーザーが接続を構成できるユーザー インターフェイス (UI)。

  • Part : すべての Web パーツのパーツ コントロールの基本クラス。Web フォーム ページ上にモジュール式の UI を表示します。

    • **EditorPart:**EditorZoneBase 領域内に存在するコントロールの基本クラス。Web パーツ コントロールを編集するのに使用されます。

    • **CatalogPart:**CatalogZoneBase 領域内に存在し、ユーザーが Web ページに追加できる Web サーバー コントロール (特に Web パーツ コントロール) のカタログを提供するコントロールの基本クラス。

    • WebPart: カスタム ASP.NET 2.0 Web パーツ コントロールの基本クラス。Part 基本クラスの機能に、いくつかの UI プロパティ、接続を作成する機能、および個人用設定の動作を追加します。

System.Web.UI.WebControls.WebParts 名前空間に属するクラスおよびインターフェイスの完全なリファレンスについては、System.Web.UI.WebControls.WebParts Namespace リファレンス ドキュメントを参照してください。

シンプルな ASP.NET 2.0 Web パーツを作成する

ASP.NET 2.0 Web パーツは特別なカテゴリのコントロールです。それらを ASP.NET 2.0 Web サイト内に表示するには、Web パーツ ページを構築する必要があります。これは、ASP.NET 2.0 コントロールを表示する必要がある場合に実行するのと同じプロセスです。

Web パーツ ページを構築するには、WebPartManager コントロールの単一のインスタンスから開始します。次に、WebPartZone コントロールの 1 つまたは複数のインスタンスを追加します。WebPartZone コントロールの各インスタンスは、1 つまたは複数の Web パーツ コントロールをホストします。ブラウザを使用して、Web パーツを別の Web パーツ領域にドラッグすることができます。必要に応じて、以下を追加できます。

  • 1 つまたは複数の EditorParts を含む EditorZone コントロール。これによりユーザーは、Web パーツの動作および外観を個人用設定することができます。

  • 1 つまたは複数の CatalogParts を含む CatalogZone。これによりユーザーは、ページ上に表示する Web パーツを選択することができます。

  • UI を提供する ConnectionZone。これによりユーザーは、Web パーツとその他のサーバー コントロールを接続することができます。

以下の図に、異なる Web パーツ コンポーネントを含む単一のページを示します。

図 2. ASP.NET 2.0 Web パーツ ページ

ASP.NET 2.0 Web パーツ ページ

以下のサンプル コードでは、シンプルな ASP.NET 2.0 Web パーツ ページを作成します。Web パーツを使用してページを構築するのに、オブジェクトがどのように入れ子になっているのかに注目してください。

<%@ Page Language="C#" %>
<%@ Register Assembly="WebPartLibrary" Namespace="MyWebParts" TagPrefix="cc1" %>
<html>
<head id="Head1" runat="server">
    <title>My Web Part Page</title>
</head>
<body>
    <form id="form1" runat="server">
<asp:WebPartManager ID="WebPartManager1" runat="server"/>
        <asp:WebPartZone ID="WebPartZone1" runat="server">
            <ZoneTemplate>
                <cc1:MyWebPart ID="WebPart1" runat="server"/>
            </ZoneTemplate>
        </asp:WebPartZone>
    </form>
</body>
</html>

注意

上記のサンプル コードでは、Web パーツを使用してシンプルな ASP.NET 2.0 ページを作成する方法を示しています。ただし、これは Windows SharePoint Services 3.0 では機能しません。

ASP.NET 2.0 を使用して作業している場合は、以下の 2 つの方法を使用して Web パーツを作成することができます。

  • System.Web.UI.WebControls.WebParts.WebPart クラスから継承したコントロールを含むカスタム クラス ライブラリ プロジェクトを作成します。クラス内で、RenderContents メソッドを無効にして HTML を表示します。クラスを用意したら、プロジェクトをコンパイルし、Web プロジェクト内の Web パーツ プロジェクトの .dll への参照を追加します。最後に、コントロールを WebPartZone に追加します。

  • ユーザー コントロール (.ascx) を作成し、コントロールを WebPartZone 内に配置します。ASP.NET 2.0 では、GenericWebPart ラッパー クラスを使用してコントロールを自動的にラップします。

    注意

    Windows SharePoint Services 3.0 では、この方法はサポートされていません。Windows SharePoint Services 3.0 または Microsoft Office SharePoint Server 2007 では、Web パーツ ページ上の Web パーツをホストするには、System.Web.UI.WebControls.WebParts.WebPart クラスから派生した ASP.NET 2.0 Web パーツのみを使用できます。

Web パーツの個人用設定について

Microsoft Office SharePoint Server 2007 を使用すると、ユーザーは情報を共有し、グループ作業を促進し、専門知識を蓄積して普及し、そのコンテンツを必要とするユーザーに提供することができます。管理者がプライバシー保護のポリシーを設定できるようにしつつ、組織内の個々のユーザーに合わせてコンテンツを調節できます。

Microsoft Office SharePoint Server 2007 と ASP.NET 2.0 では、異なる個人用設定サービスを使用します。Microsoft Office SharePoint Server 2007 では、設計上、個人用設定機能を提供する組み込みの個人用設定サービスを使用します。Microsoft Office SharePoint Server 2007 の詳細については、「個人用設定 Web パーツを計画する」を参照してください。ただし、ASP.NET 2.0 サイトでは、個人用設定を有効にするには特別な構成が必要です。

ASP.NET 2.0 が提供する個人用設定サービスでは、ユーザーは SqlPersonalizationProvider クラスを使用して、Web パーツ コントロールの状態を長期的な記憶域に保存することができます。Web パーツを含む Web ページを作成すると、ASP.NET 2.0 の個人用設定サービスにより、ユーザーによる選択が実行時に Microsoft SQL Server 2005 データベースに保存されます。

Web パーツの個人用設定は、Microsoft SQL Server Express 2005 に依存します。Microsoft Visual Studio 2005 および Microsoft Visual Web Developer 2005 では、既定で SQL Server Express 2005 がインストールされます。ただし、SQL Server Express のインストールを選択しなかった場合、後でインストールするように選択したときは、Aspnet_regsql.exe コマンドを実行してインストールできます。詳細については、「ASP.NET 2.0 SQL Server 登録ツール (Aspnet_regsql.exe)」を参照してください。

注意

別のデータベースまたは認証サーバーにアクセスするには、ASP.NET Provider Toolkit を使用してプロバイダを作成できます。

ASP.NET 2.0 の表示モードおよび範囲

表示モードおよび範囲は、ユーザー用にレイアウト、コンテンツ、および動作を個人用設定するのに役立ちます。WebPartManager コントロールを使用すると、ユーザーは表示モードおよびページ範囲を選択できます。

Web パーツを使用して作業している場合は、表示モードおよび範囲の概念について理解することが重要です。

表示モードは、非表示または表示される Web パーツ UI の要素のほか、有効化または無効化されるユーザーによる変更を定義します。

WebPartManager コントロールには、Web パーツ コントロール セットで使用できる表示モードの実装が含まれており、ページの表示モードを管理します。

  • BrowseDisplayMode: 既定の表示モードを表します。

  • CatalogDisplayMode: コントロールのカタログから Web ページにコントロールを追加するのに使用されます。

  • ConnectDisplayMode: Web パーツ コントロール間の接続を管理する特別な UI をユーザーに表示します。

  • DesignDisplayMode: Web パーツ コントロールを含む Web ページのレイアウトを変更するのに使用されます。

  • EditDisplayMode: エンド ユーザーがサーバー コントロールを編集および変更するのに使用できる UI を表示します。

個人用設定の範囲とは、個人用設定データが特定のユーザーとページ上のコントロールにのみ適用可能か、サイトを表示するすべてのユーザーに適用可能かを示します。個人用設定の範囲は、取得および表示するデータ セットを示します。

ページは以下の 2 つの範囲で実行できます。

  • 共有 : 個人用設定データを特定のコントロールにのみ適用し、コントロールを表示するすべてのユーザーに対して読み込むことを示します。ユーザーによって加えられた変更は、データ ストアに保存されます。

  • ユーザー : 個人用設定データを特定のコントロールにのみ適用し、現在実行中のユーザーに対して読み込むことを示します。現在実行中のユーザーによって加えられた変更は、データ ストアに保存されます。

Web パーツの個人用設定の詳細については、「Web パーツの個人用設定の概要」を参照してください。

Bin またはグローバル アセンブリ キャッシュを選択する

SharePoint サイト内では、Web パーツ アセンブリを以下の 2 つの場所のいずれかに展開できます。

  • Bin ディレクトリ : Web アプリケーション ルート ディレクトリに保存されます。

  • グローバル アセンブリ キャッシュ : 共通言語ランタイムと共に自動的にインストールされます。複数のアプリケーション間でアセンブリを共有できます。通常、コンポーネントは C:\WINNT\Assembly に保存されます。

以下の表に示すように、どちらの場所にも利点と欠点があります。

展開場所

利点

欠点

Bin ディレクトリ

部分的に信頼できる場所。既定では、このディレクトリから実行するコードは、コード アクセス セキュリティのアクセス許可のレベルが低くなります。管理者は、Web パーツに付与されているアクセス許可を明示的に昇格させて、正しく動作するようにする必要があります。この制御レベルおよび多層防御のため、管理者は、必要なコード アクセス セキュリティのアクセス許可の既知のセットを持つ Bin ディレクトリでアセンブリを実行させることを好む傾向があります。

また、Bin ディレクトリは Web アプリケーションに固有です。これにより、特定の Web アプリケーションのコードを分離することができます。

Web パーツをどこからでも実行できるようにするには、Bin アセンブリを展開する必要があります。

グローバル アセンブリ キャッシュ

署名済みのアセンブリを展開できるグローバルな場所。既定では、アセンブリは完全な信頼レベルで実行されます。グローバルにインストールされるので、任意の Web アプリケーションで動作します。

通常、グローバル アセンブリ キャッシュにインストールされたコードには、コード アクセス セキュリティの制限はありません。したがって、多層防御によってセキュリティを提供するという利点は失われます。

また, .PDB ファイル (プログラム データベース) をグローバル アセンブリ キャッシュ内のアセンブリに展開することが難しい場合があります。

特別なセキュリティ属性を設定する

Bin ディレクトリに保存する ASP.NET 2.0 Web パーツには、セキュリティに関する特別な制約があります。どのように使用を計画するかに応じて、フィルタ Web パーツに対して特別なセキュリティ属性を設定するかどうかを選択できます。

Bin ディレクトリは部分的に信頼できる場所です。したがって、Web パーツの実行時には、コードの完全信頼のアクセス許可は自動的に付与されません。Web パーツに呼び出すコードには部分信頼のアクセス許可のみが付与されるので、ASP.NET 2.0 Web パーツで AllowPartiallyTrustedCallers 属性を設定する必要があります。この属性はアセンブリ レベルで設定できます。

注意

AllowPartiallyTrustedCallers によりアセンブリを安全とマークすると、安全な実装のために開発者は責任を負うことになります。

もう 1 つの問題として、既定では Bin ディレクトリのコード アクセス セキュリティのアクセス許可は非常に低く、単純に実行することしかできないという点が挙げられます。通常、アセンブリを正しく実行するには、これらのアクセス許可を昇格させる必要があります。

以下の 2 つの方法でアクセス許可を昇格させることができます。

  • (推奨) 信頼ポリシー ファイルを作成し、その新しいファイルで web.config ファイルを指定します。こちらのオプションの方が複雑ですが、Web パーツのアクセス許可の属性を詳細に設定できます。

    信頼ポリシー ファイルの詳細については、「Microsoft Windows SharePoint Services およびコード アクセス セキュリティ」を参照してください。

  • Bin ディレクトリの全体的な信頼レベルを上げます。Web アプリケーション ルートにある web.config ファイルで、trust 要素タグを探します。trust 要素の level 属性の既定値は WSS_Minimal です。このレベルを WSS_Medium に変更できます。

    注意

    こちらのオプションの方が簡単ですが、信頼ポリシー ファイルを作成する方法に比べると、必要以上にアクセス許可を付与することになるため安全性の面で劣ります。

安全なコントロールの一覧

Microsoft Windows SharePoint Services テクノロジは基本的に、"信頼されていないユーザー" に、Windows SharePoint Services を実行しているシステム内での ASPX ページのアップロードおよび作成を許可することを想定しています。これらのユーザーが ASPX ページ内でサーバー側コードを追加することを防ぐ必要がありますが、信頼されていないユーザーが使用できる承認済みコントロールの一覧は必要です。Windows SharePoint Services では、これは安全なコントロールの一覧によって提供されます。

安全なコントロールの一覧とは、サイト内で任意の ASPX ページを安全に呼び出すために指定できる、SharePoint サイト専用のコントロールおよび Web パーツの一覧です。この一覧は、Web アプリケーション ルートにある web.config ファイルに保存します。

チュートリアル : ASP.NET 2.0 Virtual Earth Web パーツを構築して SharePoint サイトに展開する

異なるデータ ソースからのデータを表示する Web パーツを構築することができます。Web サービス、データベース、Microsoft Office Excel ブック、XML ファイル、またはその他の必要なデータ ソースを使用してデータを取り込み、情報を Web パーツに表示することができます。このチュートリアルでは、Virtual Earth のマップ上に運転ルートを表示する Web パーツを作成します。Web パーツは、個人用設定できる Start プロパティを提供します。ここでは、ASP.NET 2.0 Web パーツを構築して、Office SharePoint Server 2007 に基づくサイトにエクスポートする方法を紹介します。この処理は、以下の 5 つの基本的な手順から構成されます。

  1. ASP.NET 2.0 Web パーツ アセンブリを作成します。

  2. (オプション) Web パーツを ASP.NET 2.0 Web ページで実行およびテストします。

  3. Web パーツを Office SharePoint Server 2007 に展開します。

  4. Web パーツ用に .webpart ファイルを作成します。

  5. Web パーツを SharePoint ページに追加します。

    注意

    この Web パーツは、標準の ASP.NET 2.0 と Office SharePoint Server 2007 の両方の Web サイトで動作します。

手順 1: ASP.NET 2.0 Web パーツ アセンブリを作成する

シンプルな Web パーツを作成するには、ASP.NET 2.0 Web パーツ アセンブリを展開する必要があります。まず、System.Web.UI.WebControls.WebParts.WebPart 基本クラスから派生するクラスを使用してクラス ライブラリ プロジェクトを作成します。

次に、ユーザーがプロパティ (Start) を使用してコンテンツを個人用設定できるように、VirtualEarthDirectionsWebPart クラスを構築します。Web パーツは Virtual Earth に接続するスクリプトを実行し、運転ルートの情報を表示する画像ファイルを返します。VirtualEarthDirectionsWebPart クラスで RenderContents メソッドを無効にし、Web パーツがブラウザに表示する HTML ソース コードを HTMLTextWriter オブジェクトを使用して記述します。

Virtual Earth Directions Web パーツを作成するには

  1. Visual Studio 2005 で [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [プロジェクトの種類] の [C#] で [Windows] を選択します。

  3. [テンプレート] で [Web コントロール ライブラリ] を選択します。"名前" フィールドに「MySampleWebParts」と入力し、[OK] をクリックします。

  4. Class1.cs の名前を VirtualEarthDirectionsWebPart.cs に変更します。

  5. 以下のコードを VirtualEarthDirectionsWebPart.cs に追加します。

    using System;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    
    namespace MySampleWebParts {
        public class VirtualEarthDirectionsWebPart : WebPart {
    
            private const string HtmlFormat = @"<div>
    <P>&nbsp;</P>
    <P>
    <TABLE id='Table1' cellSpacing='1' cellPadding='1' width='300' border='0'>
    <TR>
    <TD><FONT face='Verdana' size='2'><STRONG>Destination: </STRONG></FONT>
    </TD>
    <TD><INPUT id='tbDestination' type='text' size='23' value='Space Needle' name='Text1'></TD>
    <TD><INPUT id='Button1' type='button' value='Get Directions' name='Button1' onclick='GetRouteMap()'></TD>
    </TR>
    </TABLE>
    
    
    </P>
    <script src='http://virtualearth.net
    <script language='javascript' id='clientEventHandlersJS'>
    <!--
             var map = null;
    
             function GetRouteMap() {{
    
                map = new VEMap('myMap');
                map.LoadMap();
    
                var destination=document.getElementById('tbDestination').value;
    
                if (destination!=null) {{
                   map.GetRoute('{0}', destination);
                }}
             }}   
    
    //-->
    </script>
    <div id='myMap' style='WIDTH:400px; POSITION:relative; HEIGHT:400px'></div>
    </div>";
    
            private string _start = String.Empty;
    
            public VirtualEarthDirectionsWebPart() {
                this.Title = "Virtual Earth Driving Directions Web Part";
                this.ExportMode = WebPartExportMode.All;
            }
    
            // Property to personalize the start location
            [Personalizable]
            [WebBrowsable]
            public string Start {
                get {
                    return _start;
                }
                set {
                    _start = value;
                }
            }
    
            // Render a Virtual Earth Map as a Web part
            protected override void RenderContents(HtmlTextWriter writer) {
    
                if (String.IsNullOrEmpty(_start)) {
                    writer.Write("Select a start point by personalizing this WebPart.");
                }
                else {
                    base.RenderContents(writer);
    
                    writer.Write(String.Format(HtmlFormat, _start));
                }
            }
        }
    }
    
  6. VirtualEarthDirectionsWebPart ソリューションをコンパイルします。

注意

このチュートリアルでは、Web パーツ クラスを手動で作成する方法について説明しています。Web パーツ プロジェクト テンプレートが「Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions」に追加されたため、これまでより簡単に Web パーツを作成できるようになりました。詳細については、「Visual Studio 2005 Extensions を使用して Windows SharePoint Services 3.0 Web パーツを作成する」を参照してください。

手順 2: Web パーツを ASP.NET 2.0 Web ページで実行およびテストする

VirtualEarthDirectionsWebPart クラスを構築した後は、ASP.NET 2.0 ページを構築して Web パーツをホストし、ページを実行して Web パーツをテストすることができます。

注意

この手順はオプションで、Web パーツを SharePoint サイトに展開する場合にのみ実行します。ただし、同じ Web パーツを ASP.NET 2.0 サイトで実行およびテストするには、以下の手順を実行します。

MyVirtualEarthDirectionsWebPart を ASP.NET 2.0 ページでテストするには

  1. Visual Studio 2005 で [ファイル] メニューの [新規作成] をポイントし、[Web サイト] をクリックします。

  2. [Visual Studio にインストールされたテンプレート] で [ASP.NET 2.0 Web サイト] を選択します。

  3. [ファイル システム] を選択し、[場所] に「C:\MyWebPartsTest」と入力します。

  4. [プロジェクト] メニューの [参照の追加] をクリックします。

  5. [参照] タブで、VirtualEarthDirectionsWebPart.dll に移動して選択し、[OK] をクリックします。

  6. Default.aspx 内のコードを以下のコードに置き換えます。

    <%@ Page Language="C#" %>
    <%@ Register Assembly="MySampleWebParts" Namespace="MySampleWebParts" TagPrefix="wpc" %>
    
    <script runat="server">
        protected void editModeLink_Click(object sender, EventArgs e)
        {
            Mgr.DisplayMode = WebPartManager.EditDisplayMode;
        }
    </script>
    
    <html>
    <head id="Head1" runat="server">
        <title>My Web Parts Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                &nbsp;
                <br />
                <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 100%">
                    <tr>
                        <td colspan="2" style="height: 50px">
                            <asp:LinkButton runat="server" Text="Edit Mode" ID="editModeLink" OnClick="editModeLink_Click" />
                            <asp:WebPartManager runat="server" ID="Mgr" Personalization-Enabled="true" />
                        </td>
                    </tr>
                    <tr>
                        <td valign="top" width="70%">
                            <asp:WebPartZone ID="WebPartZone1" runat="server" BorderColor="#CCCCCC" Font-Names="Verdana"
                                Padding="6">
                                <ZoneTemplate>
                                    <wpc:VirtualEarthDirectionsWebPart ID="MyWebPart" runat="server" ExportMode="All" />
                                </ZoneTemplate>
                                <PartChromeStyle BackColor="#F7F6F3" BorderColor="#E2DED6" Font-Names="Verdana" ForeColor="White" />
                                <MenuLabelHoverStyle ForeColor="#E2DED6" />
                                <EmptyZoneTextStyle Font-Size="0.8em" />
                                <MenuLabelStyle ForeColor="White" />
                                <MenuVerbHoverStyle BackColor="#F7F6F3" BorderColor="#CCCCCC" BorderStyle="Solid"
                                    BorderWidth="1px" ForeColor="#333333" />
                                <HeaderStyle Font-Size="0.7em" ForeColor="#CCCCCC" HorizontalAlign="Center" />
                                <MenuVerbStyle BorderColor="#5D7B9D" BorderStyle="Solid" BorderWidth="1px" ForeColor="White" />
                                <PartStyle Font-Size="0.8em" ForeColor="#333333" />
                                <TitleBarVerbStyle Font-Size="0.6em" Font-Underline="False" ForeColor="White" />
                                <MenuPopupStyle BackColor="#5D7B9D" BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana"
                                    Font-Size="0.6em" />
                                <PartTitleStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.8em" ForeColor="White" />
                            </asp:WebPartZone>
                        </td>
                        <td valign="top" width="30%">
                            &nbsp;<asp:EditorZone ID="EditorZone1" HeaderText="Edit WebParts" Width="50px" runat="server"
                                PartChromeType="TitleOnly" CssClass="EditorZoneBody" BackColor="#F7F6F3" BorderColor="#CCCCCC"
                                BorderWidth="1px" Font-Names="Verdana" Padding="6">
                                <ZoneTemplate>
                                    <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
                                    <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" Title="Custom Settings"
                                        runat="server" />
                                    <asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" />
                                </ZoneTemplate>
                                <HeaderStyle BackColor="#E2DED6" Font-Bold="True" Font-Size="0.8em" ForeColor="#333333" />
                                <LabelStyle Font-Size="0.8em" ForeColor="#333333" />
                                <HeaderVerbStyle Font-Bold="False" Font-Size="0.8em" Font-Underline="False" ForeColor="#333333" />
                                <PartChromeStyle BorderColor="#E2DED6" BorderStyle="Solid" BorderWidth="1px" />
                                <PartStyle BorderColor="#F7F6F3" BorderWidth="5px" />
                                <FooterStyle BackColor="#E2DED6" HorizontalAlign="Right" />
                                <EditUIStyle Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333" />
                                <InstructionTextStyle Font-Size="0.8em" ForeColor="#333333" />
                                <ErrorStyle Font-Size="0.8em" />
                                <VerbStyle Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333" />
                                <EmptyZoneTextStyle Font-Size="0.8em" ForeColor="#333333" />
                                <PartTitleStyle Font-Bold="True" Font-Size="0.8em" ForeColor="#333333" />
                            </asp:EditorZone>
                        </td>
                    </tr>
                </table>
    
    
                <br />
            </div>
        </form>
    </body>
    </html>
    
  7. 以下のコードを web.config ファイルに追加して、個人用設定を有効にします。

    <connectionStrings>
        <add name="MyDb" connectionString="Data Source=YourServer;Initial Catalog=aspnetdb;Integrated Security=True" providerName="System.Data.SQLClient"/>
      </connectionStrings>
    <system.web>
      <webParts enableExport="true">
          <personalization defaultProvider="MyWebPartsProvider">
            <providers>
              <add name="MyWebPartsProvider" connectionStringName="MyDb" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider"/>
            </providers>
          </personalization>
        </webParts>
    </system.web>
    

    注意

    ユーザーが Web パーツのプロパティを変更できるようにするには、個人用設定を有効にする必要があります。詳細については、この記事の「Web パーツの個人用設定について」を参照してください。

  8. MyWebPartsTest Web サイトソリューションをコンパイルします。

Default.aspx を Web ブラウザで表示すると、MyVirtualEarthDirectionsWebPart Web パーツが以下の図のように表示されます。

図 3. ASP.NET 2.0 Web ページ上の Web パーツ

ASP.NET 2.0 Web ページ上の Web パーツ

手順 3: Web パーツを Office SharePoint Server 2007 に展開する

このチュートリアルはデモンストレーション用にのみ使用するので、アセンブリを Bin ディレクトリに配置することをお勧めします。

注意

既定では、Bin ディレクトリのコード アクセス セキュリティのアクセス許可のレベルは低く、純粋な実行のみが許可されます。このサンプルではこのアクセス許可で十分なので、ここでは追加の構成を行う必要はありません。より多くのアクセス許可が必要な Web パーツがある場合は、ここで追加の構成を行う必要があります。この詳細については、「特別なセキュリティ属性を設定する」を参照してください。

Web パーツを展開するには

  1. プロジェクトの Bin ディレクトリにある MySampleWebParts.dll アセンブリを、SharePoint アプリケーション ルートの Bin ディレクトリにコピーします。

  2. アプリケーション ルートにある web.config ファイルを探し、編集できるように開きます。

  3. 以下のように、カスタム アセンブリの安全なコントロール エントリを web.config ファイルに追加します。

    <SafeControl 
    Assembly="MySampleWebParts" 
    Namespace="MySampleWebParts" 
    TypeName="*" 
    Safe="True" 
    />
    

手順 4: Web パーツ用に .webpart ファイルを作成する

すべての Web パーツには .webpart ファイルが必要です。このファイルは、Web パーツを記述する XML ファイルです。また, .webpart ファイルにより、Web パーツが Web パーツ ギャラリーに表示されます。この手順では、Web パーツを展開して、安全なコントロールの一覧に登録した後で, .webpart ファイルを作成する最も簡単な方法について説明します。

.webpart ファイルを作成するには

  1. http://MyServer/_layouts/newdwp.aspx に移動します。MyServer は、SharePoint サイトの展開先のサーバー名です。

  2. [MySampleWebParts.VirtualEarthDirectionsWebPart] の横のチェック ボックスをオンにします。

  3. [ギャラリーに追加] をクリックして、VirtualEarthDirectionsWebPart Web パーツをチーム サイト ギャラリーに追加します。

注意

Web パーツの .webpart ファイルを作成するには、Web パーツ ギャラリーで Web パーツの [編集] を選択し、[エクスポート] をクリックします。.webpart ファイルの保存場所を指定するように求めるメッセージが表示されます。ASP.NET 2.0 Web パーツをエクスポートして、それらを SharePoint サイトにインポートすることもできます。

手順 5: Web パーツを SharePoint ページに追加する

最後に、Web ページを任意の SharePoint サイト内のページにインポートします。

Web パーツを SharePoint ページに追加するには

  1. Web パーツを追加する SharePoint サイトの Web パーツ ページに進みます。

  2. Web パーツ ページで、[サイトの操作] をクリックし、[ページの編集] を選択します。

  3. VirtualEarthDirectionsWebPart を追加する Web パーツ領域で [Web パーツの追加] をクリックして、以下の図に示すように [Web パーツの追加] ダイアログ ボックスを開きます。

    図 4. [Web パーツの追加 - Web ページ] ダイアログ

    Web パーツの追加 - Web ページ ダイアログ

  4. Web パーツ領域で [編集] をクリックし、[共有 Web パーツの変更] を選択して、以下の図に示すように Start プロパティを個人用設定します。

    図 5. SharePoint サイト上の Web パーツを個人用設定する

    SharePoint サイトの Web パーツを個人用に設定

  5. 開始アドレスまたは場所を選択し、[OK] をクリックします。

  6. 以下の図に示すように、VirtualEarthDirectionsWebPart がページに表示されます。

    図 6. Web パーツで目的地を選択する

    Web パーツで目的地を選択する

  7. VirtualEarthDirectionsWebPart で目的地を選択すると、前の図に示すように Virtual Earth のマップにルートが表示されます。

まとめ

Microsoft ASP.NET 2.0 では、SharePoint サイトに対する機能拡張オプションの新しいセットを提供しています。ASP.NET 2.0 Web パーツ インフラストラクチャは、カスタム Web パーツを構築し、Microsoft Windows SharePoint Services 3.0 を使用して構築された Web サイトにそれらを展開するのに役立ちます。カスタム Web パーツを構築するには、いくつかの異なる方法を使用できます。この記事では、Web パーツを作成および展開するのに最適な方法を選択するのに役立つ情報を提供しています。また、標準の ASP.NET 2.0 と Office SharePoint Server 2007 の両方の Web サイトで動作するカスタム ASP.NET 2.0 Web パーツを作成および展開する手順について説明しています。

この記事では、Web パーツ クラスを手動で作成する方法について説明しています。Web パーツ プロジェクト テンプレートが「Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions」に追加されたため、これまでより簡単に Web パーツを作成できるようになった点にご注目ください。詳細については、「Visual Studio 2005 Extensions を使用して Windows SharePoint Services 3.0 Web パーツを作成する」を参照してください。

追加情報

謝辞

この記事に協力してくれた Mike Ammerlaan および Carlos Aguilar Mares に感謝します。