2016-06-16 20 views
0

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 

答えて

2

あなたは、あなたがSOAPオペレーションを使用することができますgithubのhttps://github.com/OfficeDev/ews-managed-apiから最新バージョンを取得し、管理APIはヘッダが

を例えば処理するコードを持っている場合は、すでにAPI管理EWSを使用しているように見えます
 String ETag = ""; 
     GetUserPhotoResults grPhoto = service.GetUserPhoto("[email protected]", "HR240x240", ETag); 
     if (grPhoto.Status == GetUserPhotoStatus.PhotoReturned) 
     { 
      ETag = grPhoto.EntityTag; 
     } 
     grPhoto = service.GetUserPhoto("[email protected]", "HR240x240", ETag); 
     switch (grPhoto.Status) 
     { 
      case GetUserPhotoStatus.PhotoReturned: ETag = grPhoto.EntityTag; 
       break; 
      case GetUserPhotoStatus.PhotoUnchanged: 
       Console.WriteLine("Photo Unchanged"); 
       break; 
     } 
+0

最新のManaged APIリリースを使用していますが、Intellisenseは自動的にGetUserPhotoResultsを自動作成しません。特定の名前空間をインポートする必要はありますか? – rojobo

+1

Microsoft.Exchange.WebService.Dataの下にありません。たとえば、https://github.com/OfficeDev/ews-managed-api/blob/154dbc66ac018d861c73ce489839cd9f58a1b0cd/Search/GetUserPhotoResults.csのクラスです。 gitHubからコンパイルする必要があることに注意してください。これは、Microsoft/Nugetのリリースではこれらの変更がないためです。 –

+0

ナゲットパッケージの問題を解決する方法 – rojobo

関連する問題