2009-09-07 6 views
8

고객 중 한 명이 재현 할 수없는 문제가 있습니다. 우리는 프로그래밍 방식으로 SPFile.Properties를 사용하여 문서의 속성을 대상 파일에 복사합니다. 그러나 어떤 이유로 파일의 속성이 파일이 저장된 목록에 지정된 메타 데이터와 일치하지 않습니다.SharePoint의 SPFile.Properties! = SPFile.Item.Properties는 언제입니까?

이제 SPFile.Item.Properties (아직 테스트하지 않음)를 복사하여이 문제를 해결할 수 있지만 어떤 상황에서 SPFile.Properties가 SPFile.Item.Properties와 다른지 궁금합니다.

업데이트 : 방금 고객으로부터 업데이트를 받았습니다. SPFile.Item.Properties를 사용하면 항상 최신 정보를 반환합니다. 그러나 우리는 여전히 원래의 질문을 이해하고 싶습니다.

+0

Tried Reflector? 코드 경로가 매우 다르기 때문에 SPFile.Properties == SPFile.Item.Properties에 의존 할 수 있다고 생각하지 않습니다. –

+0

반사경을 아직 사용하지 않았습니다. 나는 공식적인 '문서화 된'차이점과 DLL을 리버스 엔지니어링하여 그것을 공제하려고 시도하는 대신 사람들의 경험을 찾고 싶다. (내가 거기에 있었지만 ;-) –

답변

7

SPFile.PropertiesSPFile.Item 필드 사이에 약간의 차이가 있으며 첫 번째 필드는 호출 속도가 훨씬 느립니다.

Microsoft Office 문서의 "속성"창 (대부분이 하나 - http://dradisframework.org/images/tutorial/custom_document_properties.png)을 보았습니다. SPFile.Properties에 액세스 할 때 읽는 속성입니다. 바이너리 DOC 파일을 구문 분석하고 속성을 찾는 일부 코드 인프라가 있으므로 읽기가 느립니다. (모든 속성 액세스에 대해 최대 30 또는 밀리 초 소요) http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.properties.aspx

SharePoint에서 모든 항목은 SPListItem이고 필드 값입니다. 여기서는 "속성"이라는 단어를 사용하지 않습니다. Sharepoint의 콘텐츠 데이터베이스에 저장됩니다. 따라서 SPFile.Item.Properties에 액세스하면 실제로 파일이 첨부 된 SPListItem을보고 SharePoint의 콘텐츠 데이터베이스에서 해당 속성을 확인합니다.

"Office 속성"이 설정된 파일을 업로드 할 때 화면 뒤에서 어떤 일이 발생하는지 확인하면 SharePoint에서 해당 파일을 SPListItem의 같은 이름의 필드에 복사합니다. 여기에 대한 정보 : http://weblogs.asp.net/bsimser/archive/2004/11/22/267846.aspx

이러한 속성은 일반적으로 동일한 값을 갖기 때문에 SharePoint에서 파일의 메타 데이터를 읽고 다시 쓰는 방법을 알고있는 경우에만 발생합니다. 따라서 .txt 파일을 SharePoint 저장소에 저장하면 SPFile.Properties이 다시 표시되지 않습니다.

+0

지금까지 (비록 내가 그것을 확인하지는 못했지만) 지금까지 가장 좋은 설명이기 때문에 대답으로 표시했습니다. 그러나 속성이 완전히 동기화되지 않은 이유는 설명하지 않습니다. –

+1

1. 파일 유형이 .txt, .pdf 및 기타 비 사무용 파일 용이므로이 등록 정보는 동기화 할 수 없습니다. 2. 편집을 위해 문서 라이브러리 항목을 열 때/Forms/EditForm.aspx? id = 123'이라면'SPFile.Properties'가 아닌'SPFile.Item' 값을 편집하고 있고 나중에 동기화 할 수있는 것들은 SharePoint에 의해 동기화됩니다. – naivists

0

"공식적으로 문서화 된"셰어 포인트를 찾으려고하면 거의 되돌릴 수 없습니다. :-디. 온라인 문서를 빨아, 당신은 블로그 항목 등을 사용하는 것이 더 낫다.

P. 나는 Alex와 여기에 동의한다. 첨부 된 SPListItem이없는 목록에는 SPFile이 없지만 2 사이의 연결이 손상 될 수 있습니다 (즉, 목록 항목을 편집 할 수는 있지만 파일을 열 수 없음). 이 말은 2에 대한 정보가 콘텐츠 db의 다른 위치에 저장되었음을 나타냅니다. 전에 이런 일이 있었어.

+1

고마워, 나는 Blog Entries 'Official Documentation'을 고려한다. SharePoint의 경우에는 실제로 얻을 수있는 모든 것을 취하십시오. –

+0

+1 공식 문서. : D 또한, 콜린 (Colin)과 동의 할 것입니다. SPFile과 SPListItem의 차이로 인해 계속 진행되는 무언가가 있습니다. –

1

사용자는 항상 문서 라이브러리의 SPFile 속성이 아닌 ListItem 속성을 볼 수 있습니다. 따라서 복사본에서 ListItem 속성을 사용하는 것이 좋습니다.

+0

감사합니다. Koen, 이것에 대한 증거가 있습니까? 아니면 교육받은 추측입니까? 여전히 SPFile.Properties가 왜 존재하고 항상 일치하지 않는지 궁금해합니다. –

1

이 문제는 문서 속성이 실제 MSOffice 파일에 포함되어 클라이언트와 함께 이동하는 Sharepoint 속성 승격/강등 기능과 관련이 있다고 생각합니다. 그러나 Office 파일 형식 (내 지식으로).

조나단

+1

답안으로 표시된 항목에서 @naivists가 말한 내용과 일치하지 않으며 정확합니다. –