Frage

Ich mache zur Zeit einig Test, wo ich versuche programmatisch eine Websitesammlung zu löschen. Dabei erkannte ich ein seltsames Verhalten von Sharepoint.

Ich habe den folgenden Code die Websitesammlung Löschen zu testen.

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

Also, wenn ich rufe die Methode mit der URL einer vorhandenen Websitesammlung wird die Websitesammlung gelöscht werden, wie erwartet. Aber wenn ich die Methode mit null nennen, der leeren Zeichenfolge oder eine URL, die nicht auf eine Websitesammlung verbunden wird dann löscht Sharepoint die Websitesammlung, die unter root befindet (zB http: // wssdev06 / ).

Ich bin mir nicht sicher, ob ich ist auch Dump diesen SPSiteCollection.Delete () -Methode verwendet oder wenn ich nicht die conecpt von Websitesammlungen und verwaltete Pfaden verstanden habe, aber ich denke, das ist ein wirklich seltsam und erschreckend Verhalten.

Ich könnte diese behavoir auf verschiedene Web-Anwendung repoduce habe aber keine Möglichkeit auf einer anderen Sharepoint-Umgebung zu testen, in noch.

So bin ich etwas falsch zu machen oder ist das ein Fehler?

UPDATE:

Also habe ich noch ein paar Untersuchungen und erkennen, dass dies etwas mit dem Indexer der SPSiteCollection Klasse zu tun haben muß, die die Stammwebsitesammlung zurück, wenn es keine Websitesammlung unter der angegebenen URL ist. Sieht aus wie ein Fehler.

War es hilfreich?

Lösung

Wenn Sie Sharepoint bitten, eine Site Collection mit einem URL finden werde es tun, es ist am besten, einen SPSite zurückzukehren, selbst wenn es bedeutet, dass es einen Teil der URL ignorieren müssen werden.

Manchmal ist dies eine sehr gute Sache. F. I. wenn Sie die vollständige URL einer Liste und wollen die entsprechenden SPSite und SPWeb finden.

Aber es kann sehr gefährlich sein, wie wenn Sie Site-Sammlungen sind zu löschen und vielleicht einen Rechtschreibfehler machen. Wenn Sie sicherstellen möchten, erhalten Sie die richtige Site Collection die Nachschlag der SPSite erste und prüfen, ob die SPSite Sie erhalten die URL, die Sie wollen.

BR

Pro

Andere Tipps

Ihr Code sieht richtig. Ein Gedanke wäre eine Überprüfung der Websites Sammlung hinzufügen, um sicherzustellen, dass die Website, die Sie löschen möchten, ist in der Website Sammlung. Ich weiß, dies Ihre Frage nicht beantworten.

Das klingt wie genau das Problem beschrieben in Microsofts KB 968474 - stsadm kann versehentlich eine Stammwebsitesammlung löschen, wenn ein fehlerhafter URL-Pfad verwendet. Ähnlich wie Ihre Symptome, wenn Stsadm - „Wenn der URL-Pfad ist falsch ist dann gegen den einzigen gültigen Pfad versucht, das Löschen und Wiederherstellung, die die Stammwebsitesammlung der URL ist“ o wiederherstellen,

Es klingt für mich wie es einige Fehler in der zugrunde liegenden Seite ist API löschen, wie Sie vermutet. Möglicherweise sucht der Algorithmus für eine „beste Übereinstimmung“ und nicht als „exakte Übereinstimmung“.

Auflisten der Site-Sammlungen und die Validierung eine genaue Übereinstimmung könnte der beste Weg, dies zu vermeiden. Allerdings würde ich nicht sagen, dass Sie etwas falsch machen, da dies auf den Microsoft-Beispielcode ganz in der Nähe ist und die Dokumentation für die Funktion gibt keine Warnung über ungültige URLs übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top