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.




UserProfilemanager - object reference is not set to an object

Geprüfte Antwort Dieser Beitrag hat 11 Antworten

Ohne Rang
26 Beiträge
Sasa Cokic erstellt 3 Okt. 2011 11:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo :)

Ich habe via code versucht auf die userprofiles zuzugreifen leider ohne erfolg, da ich im spservicecontext.current NULL habe.

   Dim site As New SPSite(http://swelo99msp:8080)
        Dim web As SPWeb = site.OpenWeb()
        If HttpContext.Current Is Nothing Then
            Dim request As New HttpRequest("", site.Url, "")
            HttpContext.Current = New HttpContext(request, New HttpResponse(New StringWriter()))
            HttpContext.Current.Items("HttpHandlerSPWeb") = web
        End If
        Dim serverContext__1 As SPServiceContext = SPServiceContext.GetContext(site)

In der nachfolgenden Zeile bekomme ich die Fehlermeldung, das das Objekt nicht gesetzt wurde.
Habe im Internet recherchiert , doch leider bisher ohne erfolg. Der Code wird vom Farmadministrator
ausgeführt via Console.
        Dim userProfileMangager As New UserProfileManager(serverContext__1)

        Dim userCollection As SPUserCollection = web.AllUsers
        For Each spUser As SPUser In userCollection
            If spUser.LoginName.ToString() <> "NT AUTHORITY\local service" AndAlso spUser.LoginName.ToString() <> "SHAREPOINT\system" Then
                'Dim profile As UserProfile = userProfileMangager.GetUserProfile(spUser.LoginName)
                'Console.WriteLine(profile("WorkEmail").Value)
            End If
        Next

Alle Antworten

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 3 Okt. 2011 11:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Moin,

wird das Site-Objekt denn korrekt gefüllt oder ist da schon ein Fehler drin?

Der User Profile Store (Benutzerprofidienstanwendung) läuft problemlos?

 

Beste Grüße,
Christian

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

Ohne Rang
26 Beiträge
Sasa Cokic Als Antwort am 3 Okt. 2011 12:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

 

also beim live debuggen, wenn ich die web variable beobachte, wird diese auch als MySite dargestellt,  jedoch sobald die url im getcontext kommt,

ist current nicht nothing bzw leer, aber da steht dann für current : Microsoft.Sharepoint.SPServiceContext.....

die correleationid = 000000000 , da ist es mir schon spanisch vorgekommen dass da irgendwas noch nicht so ganz klappt :(

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 3 Okt. 2011 17:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Versuch mal nicht die MySites zu nutzen sondern eine "normale" Inhaltswebanwendung der auch der eine Profildienstanwendung zugeordnert wird. Wozu eigentlich dieser ganze URL Context? ;-)

Beste Grüße,
Christian

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

Ohne Rang
26 Beiträge
Sasa Cokic Als Antwort am 3 Okt. 2011 17:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Naja der Context ist notwendig anscheinend laut den codequellen.

Wenn die Context Zeilen ausblendest, bekommt man gleich direkt einen NULL WERT, für Current.

Deinen rat habe ich befolgt jedoch mit dem Selben Ergebnis.

Derzeit bin ich mit dem Farmadmin user eingeloggt, und im vs2010 habe ich auf any cpu beim debuggen gestellt :) also sollte es an diesem nicht scheitern.

Die Seite definier ich ja unter SPSite, damit ich auf die properties dann zugreifen kann, aber irgendwo ist da ein hund.

Funktioniert mein Code bei dir ? wenn du deine url einträgst `? weil dann spring ich aus dem nächsten fenster xD (windows)

 

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 3 Okt. 2011 17:42
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Der Code, der bei mir funktioniert, habe ich ja schon gepostet (ohne den ganzen HTTP Context)

http://sharepointcommunity.de/forums/p/13080/37654.aspx#37654

SPServiceContext erstellen
UserProfileManager mit ServiceContext erstellen
Profile aus dem ProfileManager abrufen.

Machst Du das gerade in der SP2010 Umgebung oder versuchst Du auf deine MOSS2007 Farm zuzugreifen?
Und nochmal die Frage: Die Profildienstanwendung läuft und ist den Webanwednungen zugeordnet?

Beste Grüße,
Christian

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

Ohne Rang
26 Beiträge
Sasa Cokic Als Antwort am 4 Okt. 2011 09:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Jap wir haben eine SP2010 Testumgebung eingerichtet. Der Profildienst ist auch am laufen, hab ich gestern noch geprüft.

Kann auch sein das in der Testumgebung die teils migrierten Sharepoint Sitecollections nen hau haben.

Werds nochmal testen und dann berichten :) aber somit weiß ich dass es nicht am code liegt sondern sicher an unserer Umgebung bzw irgend wo ein hund da begraben ist :)

Aber mega danke an dich für deine geduld :) lg aus Österreich sascha

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 4 Okt. 2011 09:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja ich würde auch nochmal die Infrastruktur durchgehen:
- Ist die Profildienstanwendung aufzurufen
- läuft der Sync
- Sind Profile vorhanden
- sagen die Logs was aus
- ist die Dienstanwendung den Webanwendungen zugeordnet
- ...

Ein User Profil aus der Dienstanwendung abzurufen ist eigentlich ein Dreizeiler und relativ trivial (im Gegensatz zu anderen Aufgaben im SharePoint). Auch für deine Consolenanwendung musst Du eigentlich keinen HTTP Context verwenden sondern nur die drei Zeilen die ich gepostet habe.

Viel Erfolg :-)

Edit: Was mir noch einfällt. Wenn es ein Consolenprogram ist könnte es auch ein Rechteproblem sein. Ich glaub da muss man Rechte in der Config-DB o.ä. haben...

Beste Grüße,
Christian

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

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Okt. 2011 10:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mir fällt auch noch was ein: das Konsolenprogramm muß .NET 3.5 verwenden und für x64 kompiliert werden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
26 Beiträge
Sasa Cokic Als Antwort am 6 Okt. 2011 10:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So ich hab edas ganze nochmal durchgecheckt, unter anderem waren einerseits die rechte falsch gesetzt deswegen wurde das net so gut durchgeführt, und andererseits habe ich das ganze nun über den userprofileservice gelöst mit dem zugriff, mir hätte zwar eure lösung besser gefallen , aber das ziel wurde erreicht und ich kann nun die properties auslesen :).

Trotzdem vielen lieben dank für eure Unterstützung !

Lg Sascha

Ohne Rang
26 Beiträge
Sasa Cokic Als Antwort am 3 Okt. 2011 13:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

wenn ich diesen Bereich :

 If HttpContext.Current Is Nothing Then

und den Code Darunter nicht drinnen habe bekomme ich bei Current _ NOTHING xD

Ohne Rang
26 Beiträge
Sasa Cokic Als Antwort am 3 Okt. 2011 13:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

 

Oder abgesehen von dem Code meine Frage:

Wie kann ich die Userprofileproperties ansprechen ? MIt current sprech ich sie ja sowieso vom aktuell eingeloggten user ?

Hab da eine Userliste die ich gerne durchparsen würde, und von den Properties würd ich nämlich folgende brauchen:

- about me

- hire date

- Responsabilities

- Skills

- interests

- schools

- birthday