MSDN Docs on Contact Photos次はあまりにも漠然としている対象に精通している人が適切にキャッシュする方法についてもっと知りたいのであれば、私は感謝します。ここでExchange Webサービスでユーザーの写真をキャッシュする
は、これまでのところ...
https://msdn.microsoft.com/en-us/library/office/jj190905(v=exchg.150).aspx#bk_EWSMA
キャッシュユーザー写真
Exchangeが収集とともに、画像/ JPEGのコンテンツタイプを使用してデータを返す私のコードですヘッダー値のETagヘッダーは変更キーに似ています。値は、写真が最後に更新された時刻を表す文字列です。 ETagは、写真が変更されるまでユーザーの写真と同じままです。このETag値は、If-None-MatchヘッダーのHTTPS GET要求でサーバーに送信できます。最後のリクエスト以降に写真が変更されていない場合、サーバーはそれを示すHTTP 304応答で応答します。つまり、新しい写真を処理するのではなく、以前にリクエストして保存した写真を使用することができます。
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
最新のManaged APIリリースを使用していますが、Intellisenseは自動的にGetUserPhotoResultsを自動作成しません。特定の名前空間をインポートする必要はありますか? – rojobo
Microsoft.Exchange.WebService.Dataの下にありません。たとえば、https://github.com/OfficeDev/ews-managed-api/blob/154dbc66ac018d861c73ce489839cd9f58a1b0cd/Search/GetUserPhotoResults.csのクラスです。 gitHubからコンパイルする必要があることに注意してください。これは、Microsoft/Nugetのリリースではこれらの変更がないためです。 –
ナゲットパッケージの問題を解決する方法 – rojobo