求助:SharePoint 2010内容管理器发送文档集至存储库时出现未知错误
我之前在处理SharePoint 2010的Content Organizer问题时,正好碰到过一模一样的“未知错误”,结合你贴的ULS日志片段,这个问题根源是查找字段或用户字段的值格式不符合系统预期,导致SPFieldLookupValue在解析时抛出了ArgumentException。下面是我当时排查和解决的步骤,亲测有效:
1. 检查文档集内容类型的字段配置
首先确认你要路由的文档集对应的内容类型,有没有包含查找字段或用户字段。重点关注:
- 字段的默认值是否设置正确:比如用户字段的默认值应该是有效的用户ID格式(
ID;#用户名),如果设置成了纯用户名或者无效字符串,就会触发解析错误。 - 字段是否被强制要求非空,但文档集里该字段的值为空或格式异常。
2. 验证Content Organizer路由规则
查看你配置的路由规则,有没有基于查找/用户字段设置路由条件?比如规则里用了某个用户字段的值来判断存储库目标,但该字段的值在文档集里是无效的(比如对应的用户已被删除,或者字段值存储格式损坏)。
可以先临时移除这类字段的条件,测试路由是否正常,以此定位问题字段。
3. 修复异常的字段值
如果找到了问题字段,需要批量检查并修复文档集的字段值:
- 手动修复:针对少量异常文档集,直接编辑文档集属性,重新设置问题字段为有效值(比如重新选择用户或查找项)。
- PowerShell批量修复:如果异常文档集数量较多,可以用脚本批量检查和修正。比如下面的脚本可以检测用户字段的异常值:
$siteUrl = "http://你的SharePoint站点URL" $listName = "文档集所在列表名称" $fieldName = "有问题的用户字段名称" $site = Get-SPSite $siteUrl $web = $site.OpenWeb() $list = $web.Lists[$listName] foreach ($item in $list.Items) { $fieldValue = $item[$fieldName] if ($fieldValue -ne $null) { try { $lookupValue = New-Object Microsoft.SharePoint.SPFieldUserValue($web, $fieldValue.ToString()) Write-Host "文档集 '$($item.Title)' 的字段值有效: $($lookupValue.User.LoginName)" } catch { Write-Host "文档集 '$($item.Title)' 的字段值异常: $fieldValue" -ForegroundColor Red # 这里可以添加修复逻辑,比如重新设置为默认用户 # $item[$fieldName] = "有效的用户ID;#用户名" # $item.Update() } } } $web.Dispose() $site.Dispose()
4. 检查字段的基础属性配置
最后确认问题字段的基础设置:
- 查找字段的“目标列表”是否存在且未被移动/删除;
- 字段的“允许空白值”设置是否符合实际需求,如果允许空白,确保系统不会强制解析空值;
- 字段是否被修改过类型(比如从单行文本改成查找字段,导致旧数据格式不兼容)。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

