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.




[SDK] Vollzugriff für Benutzer festlegen

Unbeantwortet Dieser Beitrag hat 11 Antworten

Ohne Rang
34 Beiträge
tw-elektric erstellt 25 Jan. 2010 12:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich erstelle über folgenden Code SP-Seiten:

' Ensure ParentSiteUrl is a correct Uniform Resource, otherwise throw an exception
Dim ParentSiteUri As New Uri(Me.ParentSiteUrl)

' Get reference to Meetings.asmx proxy
Dim MeetingsService As New MeetingsService.Meetings
'MeetingsService.Credentials = System.Net.CredentialCache.DefaultCredentials
MeetingsService.Credentials = New System.Net.NetworkCredential("Administrator", "passwd", "tw-elektric")

MeetingsService.Url = ParentSiteUri.AbsoluteUri.TrimEnd("/") + "/_vti_bin/Meetings.asmx"

' Create new site
Dim CreateWorkspaceResponse As XmlNode = MeetingsService.CreateWorkspace(EntityId, Me.SiteTemplate, Nothing, Nothing)
Dim NewSiteUri As New Uri(CreateWorkspaceResponse.Attributes.ItemOf("Url").Value)

' Get reference to DWS.asmx proxy
Dim DWSService As New DWSService.Dws
'DWSService.Credentials = System.Net.CredentialCache.DefaultCredentials
DWSService.Credentials = New System.Net.NetworkCredential("Administrator", "passwd", "tw-elektric")
DWSService.Url = NewSiteUri.AbsoluteUri.TrimEnd("/") + "/_vti_bin/DWS.asmx"

' Rename new site
DWSService.RenameDws(Me.SiteName)

 

Nun habe auf diesen Seite nur der Ersteller Rechte. Ich würde nun einige User hinzufügen wollen, habe auch diesen Code gefunden, aber ich weiß nicht wie ich den Bezug auf die Seite hinbekomme? Irgendwo muss ich diese Seite ja angeben...

SPWeb currentWeb = SPContext.Current.Web;

// Rollendefinition für das Berechtigungslevel "Lesen" erzeugen
SPRoleDefinition roleDefinitionRead = currentWeb.RoleDefinitions["Vollzugriff"];

// Erstellung eines neues SPRoleAssignment-Objekts
SPRoleAssignment roleAssignment = new SPRoleAssignment("CONTOSO\\UserC", "userc@contoso.de", "User C", "");

// Dem neuen RoleAssignment die Berechtigungsstufe hinzufügen
roleAssignment.RoleDefinitionBindings.Add(roleDefinitionRead);

// Das RoleAssignment der Website explizit hinzufügen
currentWeb.RoleAssignments.Add(roleAssignment);

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Jan. 2010 13:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dir geht es hier um eine Site, nicht um eine Seite! Bitte unterscheiden...

In dem Codeschnipsel wird einfach die Site aus dem Kontext genommen (SPContext.Current.Web), was bei Dir nicht funktioniert, weil die Site ja eben erst erzeugt wurde. Du mußt Dir also die Site erst holen:
SPSite siteCollection = new SPSite("http://deineURL/site");
SPWeb site = siteCollection.OpenWeb();

Das Ganze jetzt noch schön mit using versehen, damit auch sauber aufgeräumt wird.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
34 Beiträge
tw-elektric Als Antwort am 25 Jan. 2010 13:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die schnelle Antwort. Aber irgendwie schaffe ich es noch nichts ganz, oder ich stehe auf der Schlauch.

Nun bekomme ich diesen Fehler "Der Typeninitialisierer für "Microsoft.SharePoint.CoreResource" hat eine Ausnahme verursacht."

bei

Dim SPSite = New SPSite(NewSiteUri.AbsoluteUri)

Anbei der vorläufige ganze Code, ohne using.

        ' Ensure ParentSiteUrl is a correct Uniform Resource, otherwise throw an exception
        Dim ParentSiteUri As New Uri("http://srv04:8888")

        ' Get reference to Meetings.asmx proxy
        Dim MeetingsService As New MeetingsService.Meetings
        'MeetingsService.Credentials = System.Net.CredentialCache.DefaultCredentials
        MeetingsService.Credentials = New System.Net.NetworkCredential("administrator", "passwd", "tw-elektric")
        MeetingsService.Url = ParentSiteUri.AbsoluteUri.TrimEnd("/") + "/_vti_bin/Meetings.asmx"

        ' Create new site
        Dim CreateWorkspaceResponse As XmlNode = MeetingsService.CreateWorkspace("test", "MINIMAL#0", Nothing, Nothing)
        Dim NewSiteUri As New Uri(CreateWorkspaceResponse.Attributes.ItemOf("Url").Value)

        ' Get reference to DWS.asmx proxy
        Dim DWSService As New DWSService.Dws
        'DWSService.Credentials = System.Net.CredentialCache.DefaultCredentials
        DWSService.Credentials = New System.Net.NetworkCredential("administrator", "passwd", "tw-elektric")
        DWSService.Url = NewSiteUri.AbsoluteUri.TrimEnd("/") + "/_vti_bin/DWS.asmx"

        ' Rename new site
        DWSService.RenameDws("test")

        Dim SPSite = New SPSite(NewSiteUri.AbsoluteUri)
        Dim SPWeb = SPSite.OpenWeb()

        'Dim SPWeb = SPContext.Current.Web

        'Rollendefinition für das Berechtigungslevel "Lesen" erzeugen
        Dim role = SPWeb.RoleDefinitions("Vollzugriff")

        'Erstellung eines neues SPRoleAssignment-Objekts           
        Dim roleAssignment = New Microsoft.SharePoint.SPRoleAssignment("tw-elektric\ottbe", "benjamin.ott@tw-elektric.de", "Benjamin Ott", "")

        'Dem neuen RoleAssignment die Berechtigungsstufe hinzufügen
        roleAssignment.RoleDefinitionBindings.Add(role)

        'Das RoleAssignment der Website explizit hinzufügen
        SPWeb.RoleAssignments.Add(roleAssignment)


Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Jan. 2010 14:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was sagt denn der Debugger dazu? An welcher Stelle tritt denn der Fehler auf?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
34 Beiträge
tw-elektric Als Antwort am 25 Jan. 2010 14:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Der Fehler tritt hier auf: Dim SPSite As New SPSite("http://srv04:8888/test")

Siehe Image: http://www.myimg.de/?img=bild2372b.jpg

Evtl. liegt es an dem Benutzer, der den Code ausführt.
Kann ich hier bei dem Code evtl. noch irgendwie den Benutzer hinterlegen?

Auf die erstellte Site haben ja nur der Admin und ein Geräteaccount Vollzugriff...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Jan. 2010 15:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ach so, hatte ich ganz übersehen. Versuche es mal mit SPSecurity.RunWithElevatedPriviledges.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
34 Beiträge
tw-elektric Als Antwort am 25 Jan. 2010 15:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Zeile einfach vor den Code, oder wie meinst du das?

Ich tue mich ersichtlich schwer mit dem ganzen hier...

Ohne Rang
34 Beiträge
tw-elektric Als Antwort am 25 Jan. 2010 16:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

nun kommt diese Meldung, aber ich weiß nicht ob mein Code so stimmt...

http://www.myimg.de/?img=bild7e458.jpg

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Jan. 2010 16:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn ich mich richtig erinnere, muß man in VB ein Delegate-Objekt erstellen:
Dim secureCode as New SPSecurity.CodeToRunElevated(AddressOf Test)
SPSecurity.RunWithElevatedPriviledges(secureCode)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
34 Beiträge
tw-elektric Als Antwort am 26 Jan. 2010 07:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

danke, aber geht leider auch nicht.

mist...

http://www.myimg.de/?img=bild1ee27.jpg

Ohne Rang
34 Beiträge
tw-elektric Als Antwort am 26 Jan. 2010 10:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

ich habe nun etwas rechachiert und folgendens gelesen:

The only way to "remotely connect" is by using the SharePoint Web Services.
Any and all object model code must run on the same physical and logical machine as SharePoint itself

Das bedeutet für mich ja wohl, dass es nicht funktionieren wird.

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Jan. 2010 10:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nein, das bedeutet, daß man SharePoint-Daten von einem Fremdsystem aus nur über die Webservices manipulieren kann und nicht über das Objektmodell. Soweit ich sehe, hast Du zwar z.T. die Webservices benutzt, aber auch das Objektmodell, d.h. Du arbeitest wohl auf einem Server der SharePoint-Farm.

Falls dem nicht so ist, mußt Du wohl einen Weg finden, die Berechtigungen ebenfalls per Webservice zu setzen. Da kann ich Dir allerdings nicht weiterhelfen...

Edit: habe mir Deine Posts nochmal angesehen und festgestellt, daß Du wohl doch ausschließlich per Webservice arbeitest. Wie kommst Du dann an die Referenz zu Microsoft.SharePoint? Jedenfalls könnte Dir das hier helfen:
http://aspalliance.com/articleViewer.aspx?aId=791&pId=-1

Viele Grüße
Andi
af @ evocom de
Blog