読者です 読者をやめる 読者になる 読者になる

からめもぶろぐ。

ワタシ SharePoint チョット デキル

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 = 'TeamSite1'
    $context.Web.Webs.Add($web) | Out-Null
    $context.ExecuteQuery()

    # サイトを取得する
    $web = $context.Site.OpenWeb($context.Site.ServerRelativeUrl + '/TeamSite1')
    $context.Load($web)
    $context.ExecuteQuery()

    # サイトを削除する
    $web.DeleteObject()
    $context.ExecuteQuery()
}

そこで OpenWeb の実装を ILSpy で見てみたところ。

f:id:karamem0:20170421114549p:plain

( ゚д゚)

(つд⊂)ゴシゴシ

(;゚д゚)

Site.OpenWeb method (Microsoft.SharePoint.Client)