SharePoint で ASP.NET AJAX を使用する (前回投稿の補足)


環境:
Office SharePoint Server (MOSS) 2007
Visual Studio 2005
ASP.NET AJAX 1.0 

前回投稿した こちら の内容のフォローアップ情報として、SharePoint のカスタムページで ASP.NET AJAX を使用する上での留意点を記載しておきます。

Ask The Experts においても同様のデモがあった模様ですが (ASP.NET AJAX について情報の豊富な ナオキさんブログ でも取り上げられています)、SharePoint では、v3 から ASP.NET と完全統合されており、仕組みを理解しておけば ASP.NET AJAX などを活用したページ作成が可能です。ここでは、その際に留意しておく知識について簡単に記載しておきます。

まず技術的な背景ですが、SharePoint は、カスタムのハンドラを使用した ASP.NET のフレームワーク上で動く ASP.NET アプリケーションの1つとして実装されています。よって、基本的には、カスタムで作成したプロジェクトやページであっても、その Web アプリケーション (プロジェクト) 上の web.config を ASP.NET AJAX 用に正しく設定すれば動作するはずです。しかし、例えば、前回の投稿で記載した例のように、_layouts フォルダ下のプロジェクトは、SharePoint のさまざまなパス (例えば、http://machine1/sites/testA/_layouts/custompage/Default.aspx や http://machine1/sites/testB/_layouts/custompage/Default.aspx など) から参照可能となっており、こうしたパスの制御は IIS 上の仮想パスの設定ではなく、SharePoint の Web アプリケーションが実行しています。つまり、こういった仕組みと連動して動かす場合には、SharePoint が設定したルートアプリケーションの web.config を正しく設定しないと動作しないことになります。
また、海外のブログなどでは SharePoint の Web Parts において ASP.NET AJAX を使用する方法などを例に多く記載されていますが、こうしたケースも同様の理由から SharePoint の web.config の設定が必要になります。

さて、その設定方法ですが、まず、Microsoft.Web.Preview.dll や AjaxControlToolkit.dll など、使用するアセンブリをどこからでも参照できるように GAC に登録しておきましょう。(System.Web.Extensions.dll は ASP.NET AJAX をインストールすることで既に GAC に登録されているはずですので問題ありません。) そして、上述した SharePoint のルート (通常は、C:InetPubwwwrootwssVirtualDirectories80 など) の web.config の変更をおこないます。この方法については、以下に内容詳細が記載されていますのでここでは詳述しません (下記を参考にしてください)。

http://sharepoint.microsoft.com/blogs/mike/Lists/Posts/Post.aspx?ID=3

このブログに記載されているサンプルでは System.Web.Extensions (ASP.NET AJAX 1.0 のコア機能) の設定のみですので、使用するコンポーネント (AJAX CTP, AJAX Control Toolkit) に応じて、assembly や control、SafeControl の要素に設定を追加してください。(最初から可能性のあるものを全部設定しておけば良いでしょう。) また、プロジェクトテンプレートから AJAX 用の [AJAX CTP Enabled Web サイト] などを選択してプロジェクトを作成した際に、作成される aspx ページの Register ディレクティブには上記の参照などが設定されているので、これらも削除しておきましょう。(bin の下の dll も使わないので削除して結構です。)

 

Comments (2)

  1. こんにちは。 現在、米国で、SharePoint Conference 2008 が開催されており、オンラインインターネットサイトでの SharePoint Online, Excahneg Online

Skip to main content