2014-07-16 6 views
0

여기 내 문제의 단계는 다음과 같습니다DocLib 항목은 편집 후 체크 아웃 상태를 유지

  1. 이동 사용자 정의 DocumentLibrary에 (사용자 정의 필드, 사용자 정의 FieldIterator와 사용자 정의 ListForm)
  2. 생산 Word 문서에 기존 중 하나를 (선택 * .DOC)
  3. 클릭 "편집 문서"업로드 변화의 진행 표시 줄을보고, 저장 클라이언트 Office 응용 프로그램
  4. 편집 문서에서 편집을 클릭하기 위해 ...
  5. 닫기 문서,보기 I`d 전에 열렸어요. 새로 고침 될 것입니다.

문제 :

  1. 항목은 관리자에 의해 확인된다. 편집하는 데 어떤 사용자가 사용되는지는 중요하지 않으며 관리자 아래에서 항상 체크 아웃 된 문서를 볼 수 있습니다.
  2. 문서에 대한 변경 사항은 시간에 따라 적용됩니다. 내 연구의

결과 :

I`ve 피들러를 통해 loocked 및 CellStorage.svc에서이 CellRequestFail 오류 발견 :

을 :

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
     <ResponseVersion Version="2" MinorVersion="0" xmlns="http://schemas.microsoft.com/sharepoint/soap/"/> 
     <ResponseCollection WebUrl="http://kbstg.rt.ru" xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
      <Response Url="http://siteurl/Lists/DocumentationListInstance/02_D-link_DSL2640_UEBRUC2E_V2.doc" RequestToken="1" HealthScore="1"> 
       <SubResponse SubRequestToken="1" ErrorCode="Success" HResult="0"> 
        <SubResponseData/> 
       </SubResponse> 
       <SubResponse SubRequestToken="2" ErrorCode="CellRequestFail" HResult="2147500037"> 
        <SubResponseData Etag="&quot;{BB1B8453-5F6F-4D05-8210-E42DB21A6711},12&quot;" CoalesceHResult="0" ContainsHotboxData="False" HaveOnlyDemotionChanges="False">DAALAJ3PKfM5lAabFgMCAAAOAgYAAwUBbgIgAL+u/no9AyhInDE5d6/lgklaAggAZgIAADcBBwGLAQ==</SubResponseData> 
       </SubResponse> 
      </Response> 
     </ResponseCollection> 
    </s:Body> 
</s:Envelope> 

ULS 로그 나에게 준을

ttidLogCellStg Sub-request rtQueryChanges failed with error ICsiError: csierrBlobHeap_ClockReversed (0x266) 

거기에 새로운 문서를 적재하면 모든 것이 좋을 것입니다. 문제가있는 문서를 다운로드하고 새 항목을 작성하여 업로드 한 후에도 모두 괜찮을 것입니다.

업데이트 :
나는 파일에 몇 가지 테스트를했다, 그래서 나는있는 ETag는 파일 속성에있는 ETag 동일하다고 말할 수 SubRequest에있는 그림.

답변

0

이것은 MS-FSSHTTPS 프로토콜의 문제점입니다. 이 프로토콜은 Office 클라이언트 (Word)와 서버 (SharePoint)간에 Office 문서의 파일 동기화를 담당합니다. 클라이언트와 서버간에 전송되는 데이터의 양을 줄여야합니다. 더 나은 결과는 DOCX 문서를 얻지 만 DOC 파일에서도 작동합니다. 프로토콜 documentation에 따르면

Etag입니다 : 파일 내용이 변경 될 때마다 업데이트되는 고유 한 문자열 값을 지정하는 문자열. 고유 한 문자열은 어떤 프로토콜 클라이언트가 내용을 공동 작성 가능한 파일로 업데이트했는지에 관계없이 을 업데이트합니다. 프로토콜 클라이언트 이 셀 하위 요청에서 Etag 속성을 지정할 때마다 서버는 을 검사하여 클라이언트에서 보낸 Etag가 서버의 해당 파일에 지정된 Etag 과 일치하는지 확인해야합니다. 클라이언트가 지정한 버전과 서버에 저장된 버전 사이에 Etag 이 일치하지 않으면 프로토콜 서버는 셀 하위 응답 메시지에서 "CellRequestFail"로 설정된 오류 코드 값을 보내야합니다. 프로토콜 프로토콜은 [RFC2616]에 명시된대로이 값을 처리합니다.

문서에서 ETAG 메타 데이터 정보가 손상된 것으로 보입니다.

+0

참고해 주셔서 감사합니다. 어떻게 확인할 수 있습니까? – SSoro

+0

무엇을 확인 하시겠습니까? Etag는 파일의 SP 메타 데이터 구조에 저장되므로 SharePoint Manager 나 PowerShell과 같은 도구를 사용하여 저장된 메타 데이터를 표시 할 수 있습니다. 문서를 테스트 한 것처럼 다른 곳에 저장해두면 문서가 정상적으로 작동하기 때문에 문서 자체를 확인한 것 같습니다. 독점적 인 DOC 형식을 사용하기 때문에 내용을 쉽게 확인할 수 없습니다. –

+0

파일에 대해 몇 가지 테스트를 했으므로 파일 속성의 ETag가 SubRequest에있는 ETag와 같다고 말할 수 있습니다. – SSoro