SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




create a new sharepoint website

Geprüfte Antwort Dieser Beitrag hat 16 Antworten

Ohne Rang
113 Beiträge
Igor erstellt 2 Juli 2009 09:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Leute,

möchte mit dem folgeden Code eine neue Website erstellen wenn ein Listeneintrag angelegt wird, jedoch tut sich bei mir nichts.. Hat einer eine Idee?!


                using (SPSite siteCollection = new SPSite(urlEx))
                {
                    using (SPWeb site = siteCollection.OpenWeb())
                    {
                        site.Webs.Add(urlExtra, kunde, "KUNDE", Convert.ToUInt32(1033), site.WebTemplate, false, false);
                        site.Dispose();
                        siteCollection.Close();

                    }
                }
            }
            catch (Exception exception)
            {

    }
            finally
            {
                base.EnableEventFiring();
            }
        }
    }
}

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 Juli 2009 09:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du solltest die neue Site der AllWebs-Collection der SiteCollection hinzufügen (anstatt der Webs-Collection eines Webs). Dabei muß die URL relativ zur SiteCollection sein.

Außerdem gibt SPWebCollection.Add das neue SPWeb-Objekt zurück und das solltest Du disposen.

Hat der Account, unter dem das läuft, auch genügend Rechte? Ein leerer catch-Block ist immer eine ganz schlechte Idee, solange man etwas ausprobiert. Evtl. Fehler wirst Du so niemals mitbekommen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
113 Beiträge
Igor Als Antwort am 2 Juli 2009 10:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hoffe ich hab dich so richtig verstanden..

SPSite siteCollection = new SPSite("http://test");

SPWeb site = siteCollection.AllWebs.Add("subsite/meineneueseite", kunde, "Description", Convert.ToUInt32(1033), "STS", false, false);

site.Dispose();

siteCollection.Close();

 

Es funktoniert jedoch immer noch nicht.. Die nötigen Rechte hab ich auch...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 Juli 2009 11:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, so meinte ich das. siteCollection mußt Du übrigens nicht schließen oder disposen, wenn Du using verwendest.

Wenn es nicht klappt, dann lasse Dir (wie oben bereits gesagt) den Fehler ausgeben, anstatt ihn einfach zu verschlucken (leerer catch-Block).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
113 Beiträge
Igor Als Antwort am 2 Juli 2009 11:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

da muss ich leider passen.. Wie krieg ich das denn hin?!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 Juli 2009 11:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Indem Du die Exception nicht einfach verschluckst, sondern eben irgendwohin ausgibst (Debugger, EventLog, Datei, ...)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
113 Beiträge
Igor Als Antwort am 2 Juli 2009 12:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für deine Hilfe!!

Ich hätte, da noch ein kleines Problem und zwar möchte ich zwei Seiten gleichzeitig anlegen.. an sich ja kein Problem, aber die Seite wird unter der url z.B. http://test-sp angelegt wo auf das Event statt findet und die andere seite wird unter der url: test-sp-01 angelegt.. die eine Seite wird angelegt, wo auch das Event statt findet, jedoch die zweite nicht.. Woran könnte das liegen?

Ohne Rang
5 Beiträge
Rene Muster Als Antwort am 3 Juli 2009 19:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

An den Berechtigungen? Wenn die beiden Sites auf unterschiedlichen WebApplikationen mit unterschiedlichen Usern laufen hast du nicht zwingend auch die notwendigen Rechte.

Da ist Exception Handling gefragt. Welche Fehlermeldung wird denn ausgegeben?

Ohne Rang
113 Beiträge
Igor Als Antwort am 6 Juli 2009 09:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hab noch nie Expection Handling gemacht und im Netz hab ich jetzt auch nicht wirklich was gefunden.. Hättest du vielleicht ein Code Bespiel?!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Juli 2009 10:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Igor"]Ich hab noch nie Expection Handling gemacht [/quote]

Wenn Du ernsthaft programmieren willst, dann wird es aber dringend Zeit.

Grundsätzlich hast Du das oben schon angedeutet, allerdings mit leerem catch-Block. Ich habe Dich ja mehrfach darauf hingewiesen.

try {
// hier der Code, der einen Fehler erzeugen könnte
}
catch (Exception ex) {
// hier hast Du das Exception-Objekt ex, dessen Eigenschaften Du auswerten kannst, um nähere Informationen über den Fehler zu erhalten. Z.B. ins EventLog schreiben
}

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
113 Beiträge
Igor Als Antwort am 6 Juli 2009 10:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

folgender Fehler kommt :

 

Cannot open database "SharePoint_Extranet" requested by the login. The login failed.

Login failed for user 'LAN\sp-test-ap-int'.

 

 anscheinent hat er ein Problem mit dem Login, aber "sp-test-ap-int" ist auch niht mein user. Kann ich ihm irgendwie die Login Informationen mit geben. Aber der User sollte Variable sein, also nicht immer ich, sonder auch andere Personen die halt gerade am Sharepoint arbeiten?!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Juli 2009 10:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Siehst Du, mehrere Leute haben ja bereits vermutet, daß es ein Berechtigungsproblem ist ;-)

Schau Dir im SDK mal SPSecurity.RunWithElevatedPriviledges an. Damit kannst Du Code unter dem Systemaccount ausführen und der hat immer alle Rechte. Aber Achtung, nicht übertreiben. Damit kannst Du auch eine komplette Farm zerstören...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
113 Beiträge
Igor Als Antwort am 6 Juli 2009 10:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

An sich hab ich ja die Rechte, aber der login ist ja nicht meiner.. Aber ist es auch okay.. :-) Vielen Dank für die Hilfe;-)

Ohne Rang
113 Beiträge
Igor Als Antwort am 6 Juli 2009 11:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich lass das ganze so laufen.. aber der Fehler bleibt der selbe.. Ist denn mein Code richtig?

 

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
       
                    {
                        using (SPSite exSite = new SPSite("http://test-extranet/"))
                        {
                                   
                                string reURLex = cat + "/" + kunde02;

                                SPWebCollection exSiteWebs = exSite.AllWebs;
                                SPWeb extraSite = exSiteWebs.Add(reURLex, kunde,
                                "This is a programmatically created site.", 1031, "STS#1", false, false);
                          
                        }
                    }
                });

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Juli 2009 12:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Der Code sieht richtig aus und wenn Du jetzt noch den Fehler abfängst, dann bekommst Du wahrscheinlich auch raus, warum es nicht geht.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
113 Beiträge
Igor Als Antwort am 6 Juli 2009 14:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ich hab die Site Collection jetzt auch ins using gesetz, dort kommt aber der Fehler :

Error 1 'Microsoft.SharePoint.SPWebCollection': type used in a using statement must be implicitly convertible to 'System.IDisposable' 

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Juli 2009 14:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Fehlermeldung sagt es doch: using kann nur mit Klassen verwendet werden, die IDosposable implementieren.

Viele Grüße
Andi
af @ evocom de
Blog