Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候是SPFile.Properties!=是否要在SharePoint中创建SPFile.Item.Properties?_Sharepoint_Splistitem - Fatal编程技术网

什么时候是SPFile.Properties!=是否要在SharePoint中创建SPFile.Item.Properties?

什么时候是SPFile.Properties!=是否要在SharePoint中创建SPFile.Item.Properties?,sharepoint,splistitem,Sharepoint,Splistitem,我们的一个客户有一个我们无法复制的问题。我们使用SPFile.properties以编程方式将文档的属性复制到目标文件。但是,由于某些原因,该文件的属性与存储该文件的列表中指定的元数据不匹配 现在,我们可以通过复制SPFile.Item.Properties(尚未测试)来解决这个问题,但我只是想知道SPFile.Properties在什么情况下不等于SPFile.Item.Properties 更新:我们刚收到客户的更新。使用SPFile.Item.Properties始终返回最新信息。然而,我

我们的一个客户有一个我们无法复制的问题。我们使用SPFile.properties以编程方式将文档的属性复制到目标文件。但是,由于某些原因,该文件的属性与存储该文件的列表中指定的元数据不匹配

现在,我们可以通过复制SPFile.Item.Properties(尚未测试)来解决这个问题,但我只是想知道SPFile.Properties在什么情况下不等于SPFile.Item.Properties

更新:我们刚收到客户的更新。使用SPFile.Item.Properties始终返回最新信息。然而,我们仍然希望理解最初的问题。

尝试查找sharepoint的“官方文档”几乎是不可撤销的:-在线文档很烂,你最好使用博客等


另外,我同意亚历克斯的观点。虽然SPFile在没有附带SPListItem的列表中不存在,但2之间的连接可能会损坏(即,能够编辑列表项,但文件无法打开)。对我来说,这表示有关2的信息存储在内容数据库的不同位置。我以前也遇到过这种情况。

用户在文档库中总是会看到ListItem属性,而不是SPFile属性。因此,在副本中使用ListItem属性是一种方法。

SPFile.properties
SPFile.Item
字段之间有一点不同,第一个字段的调用速度要慢得多

您很可能已经看到了Microsoft Office文档的“属性”窗口(此窗口-)。这些是访问
SPFile.properties
时读取的属性。读取它们的速度很慢,因为有一些代码基础结构可以解析二进制文档文件并查找属性。(每次访问属性最多需要30毫秒左右)请参阅此处的详细信息:

在SharePoint中,每个项目都是一个
SPListItem
,其字段值(我在这里不是故意使用“属性”一词)存储在SharePoint的内容数据库中。因此,当您访问
SPFile.Item.Properties
时,实际上可以查看文件所附加到的
SPListItem
,并查看SharePoint内容数据库中的属性

当您上载设置了某些“Office属性”的文件时,后台发生的情况是SharePoint将它们复制到
SPListItem
中相同的命名字段中。(此处有一些相关信息:)


这就是为什么这些属性通常具有相同的值,但只有当SharePoint知道如何从文件中读取元数据并将其写回时,才会发生这种情况。因此,如果您在SharePoint应用商店中放置了
.txt
文件,您将无法获得任何
SPFile.Properties
返回。

我认为此问题与Sharepoint属性升级/降级功能有关,该功能使文档属性能够嵌入到物理MSOffice文件中,并随文件一起传送到客户端等。但目前仅支持Office文件类型(据我所知)


乔纳森

?代码路径看起来非常不同,所以我认为您不能依赖于SPFile.Properties==SPFile.Item.Properties。还没有尝试使用reflector。我希望找到官方“记录”的差异,以及人们对它的经验,而不是试图通过反向工程DLL来演绎它。(虽然我去过那里,)谢谢,我认为博客条目是官方文件。如果是SharePoint,你真的会拿走你能得到的任何东西。+1用于官方文档:我也同意科林的看法。。由于SPFile和SPListItem之间的差异,发生了一些事情。谢谢Koen,有没有证据证明这一点,或者这是一个有根据的猜测?仍然想知道为什么SPFile.Properties会存在并且不总是匹配。我已经将这个标记为答案,因为它是迄今为止最好的描述(尽管我还没有验证它)。但这并不能解释为什么这些属性不能完全同步。如果文件类型不允许,这些属性将无法同步,因为这适用于.txt、.pdf和其他非office文件2。当您在
/Forms/EditForm.aspx?id=123
中打开文档库项进行编辑时,您正在编辑
SPFile.item
值,而不是
SPFile.Properties
和可同步的属性,这些属性稍后将由SharePoint进行同步。正确,与@naivists在标记为答案的条目中所述内容相同。