2016-06-16 2 views
0

MSDN의 연락처 사진에 대한 문서 다음은 너무 막연합니다. 주제에 익숙한 사람이 제대로 캐싱하는 방법에 대해 더 많은 통찰력을 제공 할 수 있으면 감사하겠습니다. 여기 Exchange 웹 서비스에서 사용자 사진 캐싱

은 ... 지금까지

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 릴리스를 사용 중이며 intelisense가 자동 완성되지 않음 GetUserPhotoResults 특정 네임 스페이스를 가져와야합니까? – rojobo

+1

해당 없음 Microsoft.Exchange.WebService.Data 예 : 클래스 https://github.com/OfficeDev/ews-managed-api/blob/154dbc66ac018d861c73ce489839cd9f58a1b0cd/Search/GetUserPhotoResults.cs. gitHub에서 컴파일해야하는데 Microsoft/nuget 릴리즈에는 이러한 변경 사항이 없습니다. –

+0

너겟 패키지를 사용하여 문제 제기 – rojobo

관련 문제