目前,我正在做一些测试我试图删除的网站收集编程。而我意识到一些奇怪的行为SharePoint。

我用了下列代码,试验网站集中删除。

private static void DeleteSiteCollection(string urlSiteToDelete)
{
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
       SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://wssdev06"));
       webApp.Sites.Delete(urlSiteToDelete);                    
       webApp.Update();
    });
}

所以当我打电话的方法的网址现有的网站收集的网站集中将删除,因为预期。但当我打电话的方法与空,空串或一个网址,这是没有连接到一个网站集SharePoint删除该网站集中驻留在根(例如 http://wssdev06/).

我不知道如果我太倾倒使用这SPSiteCollection.删除()方法,或者如果我不明白的conecpt的网站集和管理路径,但我认为这真的很奇怪和令人震惊的行为。

我可以repoduce这行不同的网络应用程序,但没有选择,以测试在另一SharePoint环境。

所以我做错了什么或者这是一个错误?

更新:

所以我做了一些更多的调查,并意识到,这必须与索引的SPSiteCollection类其返回的根本站收集如果没有网站集中位于下给予的网址。看起来像一个错误。

有帮助吗?

解决方案

每当你问的SharePoint使用URL它会做,最好返回的SPSite即使这意味着要忽略的URL的一部分,以找到一个网站集。

有时候,这是一件非常好的事情。 f.i.如果你有一个清单的完整URL,并希望找到相应的SPSite和的SPWeb。

但它可以当你删除网站集,也许做一个拼写错误一样很危险的。 如果你想确保你得到正确的网站集查找的SPSite的第一,并检查您获得的SPSite有你想要的网址。

BR

其他提示

您的代码看起来正确。一个想法是添加的网站集合的检查,以确保您要删除该网站是在网站收集。我知道这并不能回答你的问题。

这听起来好像正是在微软的KB 968474描述的问题 - STSADM可能会无意中删除根网站集,如果使用错误的URL路径。类似你的症状,使用STSADM时 - “如果URL路径不正确,则删除和恢复试图针对该URL的根网站集的唯一有效路径的” o恢复,

这听起来好像有底层现场一些bug删除API,你嫌。也许,该算法寻找一个“最接近的匹配”,而不是“精确匹配”。

枚举网站集和验证的精确匹配可能是避免这种情况的最好办法。不过,我不会说你做错了什么,因为这是非常接近微软的示例代码和功能的文档提供了有关将无效的网址没有任何警告。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top