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.




OrganizationProfile.RemoveMember endet in Fehlermeldung System.UnauthorizedAccessException

Unbeantwortet Dieser Beitrag hat 5 Antworten

Ohne Rang
41 Beiträge
Ladislav Stupak erstellt 7 Jan. 2011 11:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sehr geehrte Damen und Herren,

ich versuche programmatisch einen Mitglied aus dem OrganizationsProfile mit der folgenden Methode zu löschen:

 private void RemoveUserProfile(long departmentRecordId, long userRecordId)
        {
            using (SPSite site = new SPSite(SiteUrl))
            {
                HttpContext tmpContext = HttpContext.Current;

                try
                {
                    SPSecurity.RunWithElevatedPrivileges(delegate()
                    {
                        using (SPSite elevatedSiteColl = new SPSite(site.ID))
                        {
                            SPServiceContext serviceContext = SPServiceContext.GetContext(elevatedSiteColl);

                            HttpContext.Current = null;

                            OrganizationProfileManager organizationProfileManager = new OrganizationProfileManager(serviceContext);

                            OrganizationProfile organizationProfile = organizationProfileManager.GetOrganizationProfile(departmentRecordId);

                            organizationProfile.RemoveMember(userRecordId);

 

                        }
                    });
                }
                catch (Exception ex)
                {
                 

                 }
                finally
                {
                    HttpContext.Current = tmpContext;
                }
            }
        }

 

Das löschen ist nicht möglich.

Die folgende Fehlermeldung bricht die Methode ab:

System.UnauthorizedAccessException was unhandled by user code
  Message=Attempted to perform an unauthorized operation.
  Source=Microsoft.Office.Server.UserProfiles
  StackTrace:
       at Microsoft.Office.Server.UserProfiles.OrganizationProfile.RemoveMember(Int64 userRecordID)
       at WorldDirect.SharePoint.KBA.Common.OrganizationMembers.OrganizationStructure.<>c__DisplayClass19.<RemoveUserProfile>b__15()
       at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
       at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
  InnerException:

Ich danke euch sehr schön für Ihre Hilfe.

Ladislav Stupak

 

Alle Antworten

Ohne Rang
11 Beiträge
Florian Bruggisser Als Antwort am 7 Jan. 2011 11:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Fehlermeldung beschreibt sich ja selbst:

Unautorisierter Zugriff

Sind genügen rechte vorhanden?

Gruss Florian

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 7 Jan. 2011 11:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Fehlt da eventuell ein

elevatedSiteColl.AllowUnsafeUpdates = true;

bevor du den ProfileManager initialisierst?

siehe auch hier:
http://social.technet.microsoft.com/Forums/pl-PL/sharepoint2010programming/thread/1c451126-545e-4bd4-80aa-3342d7f1f4e3

Edit: Eventuell den HTTPContext auf null setzen, siehe hier:
http://wss.boman.biz/Lists/Posts/Post.aspx?ID=23

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
41 Beiträge
Ladislav Stupak Als Antwort am 7 Jan. 2011 11:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Christian,

ich danke dir sehr schön für deine Antwort.

elevatedSiteColl.AllowUnsafeUpdates=true;

hilft auch nicht.

Ich danke dir sehr schön für Hilfe.

Ladislav

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 7 Jan. 2011 11:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was ist wenn du den HTTP-Context auf null setzt wie im "Edit" beschrieben?

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
41 Beiträge
Ladislav Stupak Als Antwort am 7 Jan. 2011 12:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Christian,

denn HttpContext.Current = null;

habe ich in dem Code auch drinnen.

Diese Methode funktioniert gut, wenn ich die Daten lesen will.

Sie funktioniert nicht bei der Aktualisation der Daten.

Auf der Seite

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx

ist in dem gelben Block beschrieben, dass bei der Aktualisation zusätzlich die Methode SPWeb.ValidateFromDigest() eingesetzt sein soll. Nur wie ich diese Methode einsetzen soll ist nicht beschrieben.

Ich danke dir sehr schön für deine Hilfe.

Ladislav