絶対URLからSPListを取得する

投稿者: | 2009年9月22日

絶対URLからSPListを取得する方法です。
結論から言うと、SPListはhttp://から始まる絶対URLで取得することができません。
SPListはホスト名からの相対URLで取得します。管理パスとかサブサイトとかで階層がどんなに深くなっていても、ホスト名からの相対URLを指定します。
従って、以下のコードのように何らかのやり方でホスト名までの部分を削除し、その値をSPWebのGetListメソッドに渡します。





これで問題なさそうですが、SPWeb.GetListメソッドは一つだけ注意点があります。
SPWeb.GetListメソッドは、引数として渡されたURLのファイル名の部分まで意味を持ちます。
例えば、リスト名までは合っていてもファイル名の部分に間違いがあると、SPListを取得することができません。
以下のコードは、DispForm.aspxがDisp.aspxと間違えているため、SPListは取得できません。

なお、ID=1の部分で存在しないアイテムIDが指定されていても、ファイル名まで合っていれば問題なくSPListを取得できます。
従って、SPWeb.GetListメソッドでSPListを取得する場合は、ファイル名から先のURLは削除しておいたほうが良いです。

指定の絶対URLでSPListが取得できない場合、FileNotFoundExceptionが発生します。