現在、サイト コレクションをプログラムで削除しようとするテストを行っています。これにより、SharePoint の奇妙な動作に気付きました。
次のコードを使用して、サイト コレクションの削除をテストしました。
private static void DeleteSiteCollection(string urlSiteToDelete)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://wssdev06"));
webApp.Sites.Delete(urlSiteToDelete);
webApp.Update();
});
}
そのため、既存のサイト コレクションの URL を使用してメソッドを呼び出すと、サイト コレクションは期待どおりに削除されます。しかし、null、空の文字列、またはサイト コレクションに接続されていない URL を使用してメソッドを呼び出すと、SharePoint はルートの下にあるサイト コレクションを削除します (例: http://wssdev06/ )。
この SPSiteCollection.Delete() メソッドを使用するにはあまりにも愚かなのか、それともサイト コレクションと管理パスの概念を理解していなかったのかはわかりませんが、これは非常に奇妙で憂慮すべき動作だと思います。
この動作を別の Web アプリケーションで再現することはできましたが、別の SharePoint 環境でテストするオプションはまだありませんでした。
それで、私は何か間違ったことをしていますか、それともこれはバグですか?
アップデート:
そのため、さらに調査を行ったところ、指定された URL の下にサイト コレクションがない場合にルート サイト コレクションを返す SPSiteCollection クラスのインデクサーと関係があるはずであることがわかりました。バグのように見えます。