使用ContentDeploymentJob.AddQuickDeployObject的时候, 请注意第三个参数一定要使用Server Relative URL
MSDN描述这个方法的时候, 并没有写上这个十分值得注意的地方. 笔者在解决一个朋友的问题的时候, 发现了这个问题.
笔者已经在MSDN的ContentDeploymentJob.AddQuickDeployObject Method 文章下面添加了一条注释, 提醒大家使用这个content deployment API的时候注意一下.
这里用中文对原因做出解释, 方便国内的朋友们.
正如大侠Stefan介绍的, 一个页面在被指定需要quick deploy之后, SharePoint的一个隐藏列表(名为’Quick Deploy Items’)中会添加一条关于这个item的记录. 如下:
列表如下:
每次Quick Deployment Job运行结束之后, 该列表中的items都会被清空.
如果我们使用方法ContentDeploymentJob.AddQuickDeployObject 来指定某个非publishing页面(因为publishing页面不需要我们编程来标记为需要quick deploy), 比如说图片, 文档之类的item需要被quick deploy的话, 正常情况下, 我们标记的item在quick deploy之后也应该被清除掉的. 但是, 如果你在第三个参数, 即itemUrl中赋予的是一个full URL,虽然deploy会成功, item在目标站点集里会出现, 但是在quick deploy items列表中的列表项却永远不会被自动删掉了.
原因是SharePoint在执行quick deploy job后的清理工作的时候, 当我们制定的itemUrl参数的值跟这个item的relative URL匹配的时候, 才会执行删除动作.
这个问题比较难发现, 所以记在这里, 供大家参考.
参考资料
=================
ContentDeploymentJob.AddQuickDeployObject Method
Content Deployment – The complete Guide – Part 5 – Quick Deployment