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 メソッドも同様です。
login