2008年3月19日 (水)

SharePoint の Web サービスについて

Windows SharePoint Services にはビルトインのWebサービスが各種用意されており、カスタム アプリケーションから SharePoint を操作する際には便利です。無論 SharePoint Server 2007 でも利用できます。

Web サービスはどこのサイトからでも利用できるように共有されており、主な Web サービスは「http://サイトのURL + /_vti_bin/各種Webサービス(*.asmx)」という形式でアクセスできるようになっています。

たとえば次のような Web サービスが提供されています。

  • UserGroup.asmx … ユーザー、ロール定義、およびグループを操作するためのメソッドを提供する。具体的にはユーザーやグループの追加や権限設定などが行える。
  • Lists.asmx … リストまたはリストデータを操作するためのメソッドを提供する。 具体的にはリストの取得、リスト アイテムの取得、リストアイテムの更新などが行える

その他にも、多くの Web サービスが提供されていますので詳細は以下の URL をご覧ください。

この 「_vti_bin」フォルダは実際には、SharePoint Server 2007 のインストールされているフロントエンドWebサーバーの「%ProgramFiles%\Common Files\Microsoft Shared\Web Server Extensions\12\isapi」です。isapi フォルダのプロパティを開くと、以下の図のようにエイリアスが設定されていることがわかります。

[図._vti_bin]
_vti_bin

利用する際の注意事項

注意このような Web サービスを利用してカスタム アプリケーションを開発できるのですが、Visual Studio 2005 を使用していた際に以前トラブルに遭遇したことがありますので、備忘録として記載しておきます。

<問題の再現>

SharePoint サイトにルートのサイトコレクションを作成していないと、Web 参照追加時に次のようなエラーが表示され[Web 参照の追加]ボタンがアクティブになってくれないようです。

「URL "<http://WebサービスのURL>" のドキュメントは既知のドキュメントの種類として認識されませんでした。それぞれの既知の種類に関するエラーメッセージを参照して問題を解決してください。
- '<
http://WebサービスのURL>' からのレポート: 'このドキュメントの形式は認識されません。コンテンツ タイプは 'text/html; charset=utf-8' です。'
- 'DISCO ドキュメント' からのレポート: 'ルート要素が見つかりません。'
- 'WSDL ドキュメント' からのレポート: 'このドキュメントの形式は認識されません。コンテンツ タイプは 'text/html; charset=utf-8' です。'
- 'XML スキーマ' からのレポート: 'このドキュメントの形式は認識されません。コンテンツ タイプは 'text/html; charset=utf-8' です。'」

[図.Web参照の追加:エラー]

Addwebserviceerror

<問題の解決策>

解決方法は次のいずれかです。

  • ルートのサイトコレクションを作成する
  • Webサービスを指定する際に "?WSDL" まで指定する

次の図は "?WSDL" までの URL を指定してみたものですが、無事に "参照の追加" ボタンが利用できるようになります。

[図."?WSDL" まで指定したところ]
Addwebserviceerror_fixed

以上、ご参考まで。