⚠️
CSOM の Site.OpenWeb メソッドで File Not Found が発生する件について
CSOM で以下のコードのように同じサイトを作成したり削除したりを繰り返すと ServerException (File Not Found)
が発生します。
最初はタイミングの問題かなと思ったのですが、スリープを入れても常に発生するので、そういう問題でもなさそう。
$context.Load($context.Site)
$context.ExecuteQuery()
for ($i = 0; $i -lt 2; $i++) {
# サイトを作成する
$web = New-Object Microsoft.SharePoint.Client.WebCreationInformation
$web.Url = "{{site-name}}"
$context.Web.Webs.Add($web) | Out-Null
$context.ExecuteQuery()
# サイトを取得する
$web = $context.Site.OpenWeb($context.Site.ServerRelativeUrl + "/{{site-name}}")
$context.Load($web)
$context.ExecuteQuery()
# サイトを削除する
$web.DeleteObject()
$context.ExecuteQuery()
}
そこで OpenWeb の実装を ILSpy で見てみたところ。
キャッシュしてますね。
Discussion