Pro MSDN-Dokumente zu Kontaktfotos Folgendes ist zu vage Ich würde mich freuen, wenn jemand, der mit dem Thema vertraut ist, mehr Einblick in das richtige Caching geben kann.Zwischenspeichern von Benutzerfotos in Exchange-Webdiensten
Hier ist mein Code so weit ...
https://msdn.microsoft.com/en-us/library/office/jj190905(v=exchg.150).aspx#bk_EWSMA
Caching Benutzer Fotos
Austausch gibt die Daten mit dem Inhaltstyp image/jpeg, zusammen mit einer Sammlung von Kopfzeilenwerten. Der ETag-Header ähnelt einem Änderungsschlüssel. Der Wert ist eine Zeichenfolge, die angibt, wann das Foto zuletzt aktualisiert wurde. Der ETag bleibt für das Benutzerfoto gleich, bis das Foto geändert wird. Sie können diesen ETag-Wert in der HTTPS-GET-Anforderung in einem If-None-Match-Header an den Server senden. Wenn sich das Foto seit der letzten Anfrage nicht geändert hat, antwortet der Server mit einer HTTP 304-Antwort, die dies anzeigt. Dies bedeutet, dass Sie das Benutzerfoto, das Sie zuvor angefordert und gespeichert haben, verwenden können, anstatt ein neues zu bearbeiten.
Dim oPictureRequest As HttpWebRequest
Dim strHttpPhotoEndPoint As String = pExchangeContact.Service.Url.ToString & "/s/GetUserPhoto?email=" & pExchangeContact.Service.ImpersonatedUserId.Id & "&size=HR240x240"
Dim strPictureFilePath As String = config.PrivateContactPicturesPath & "/" & pEmployeeId.ToString & "/" & pCRMContact.ContactId.ToString & ".jpg"
Dim oCachePolicy As New HttpRequestCachePolicy(HttpRequestCacheLevel.Revalidate)
If pExchangeContact.HasPicture Then
oPictureRequest = DirectCast(WebRequest.Create(strHttpPhotoEndPoint), HttpWebRequest)
oPictureRequest.CachePolicy = oCachePolicy
Using oPictureResponse As HttpWebResponse = DirectCast(oPictureRequest.GetResponse(), HttpWebResponse)
If oPictureResponse.StatusCode = HttpStatusCode.OK Then
Dim oPicture As Bitmap = New Bitmap(oPictureResponse.GetResponseStream())
oPicture.Save(strPictureFilePath)
End If
End Using
End If
Danke Ich verwende die neueste Managed API-Version und Intlisense wird GetUserPhotoResults nicht automatisch vervollständigen muss ich einen bestimmten Namespace importieren? – rojobo
Nein ist unter Microsoft.Exchange.WebService.Data zB die Klasse https://github.com/OfficeDev/ews-managed-api/blob/154dbc66ac018d861c73ce489839cd9f58a1b0cd/Search/GetUserPhotoResults.cs. Beachten Sie, dass Sie von gitHub kompilieren müssen, dass die Microsoft/nuget-Version diese Änderungen nicht enthält. –
thnaks, um das Problem mit dem nugget-Paket anzugehen – rojobo