SharePoint のWebサービスを呼ぶお作法

ご存知の方には「何を今さら」的なプチノウハウです。SharePointのWebサービスの「正しい呼び出し方」について、恥ずかしながら凄い勘違いをしていたことに先日気がつきました…。

SharePointのWebサービスは、全て /_vti_bin/xxxx.asmx でアクセスできます。
この /_vti_bin/ は仮想ディレクトリですので、例えば、

 http://server/_vti_bin/xxxx.asmx

でも、

 http://server/site/_vti_bin/xxxx.asmx

でも、

 http://server/site/subsite/_vti_bin/xxxx.asmx

でも、同じサービスが呼び出されます。
従って、Webサービスを利用する場合、主に管理のしやすさから、原則としてルート直下、つまり http://server/_vti_bin/xxxx.asmx を指定して呼びだすべき … と誤解していました

厳密には、全く間違っている訳でもないのですが。SharePoint 標準のWebサービスは、本来は http://server/現在のサイト/_vti_bin/xxxx.asmx を指定するのが正しいのだそうです(と Microsoft のコンサルご担当から伺いました)

具体的には、Lists.asmx の UpdateListItems メソッドは、「更新されるリストのあるサイト」から呼び出さないと、エラーになります。このあたりの仕様は、サービスやメソッドによっても異なるようです。例えば、同じ Lists.asmx でも GetListItems メソッドであればサイトに影響されません。また、userprofileservice.asmx の GetUserProfileByName メソッドも同様です。


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9