Azure DevOps Server 2020 witadmin执行命令时出现500内部服务器错误
问题分析与修复方案
可能原因
该ArithmeticException算术溢出错误并非由XML文件大小触发,而是目标集合的工作项跟踪元数据出现损坏或异常(比如字段配置异常、全局列表数据量超出预期范围,或元数据存储的数值超出了程序预期的计算范围),导致GetMetadataEx2命令在处理元数据时触发算术运算溢出。
修复步骤
- 检查并修复集合完整性
- 执行Azure DevOps Server自带的集合验证命令:
TFSConfig Collection /verify /collectionName:你的集合名称 - 若检测到损坏,运行修复命令:
TFSConfig Collection /repair /collectionName:你的集合名称
- 执行Azure DevOps Server自带的集合验证命令:
- 清理集合缓存
- 停止Azure DevOps Server相关服务:Azure DevOps Server Application Pool、Team Foundation Background Job Agent
- 删除服务器端缓存:默认路径为
C:\Program Files\Azure DevOps Server 2020\Application Tier\Web Services\_tfs_data\你的集合名称下的缓存文件夹 - 重启所有停止的服务
- 排查异常元数据
- 通过REST API尝试导出全局列表:
GET http://你的服务器地址:8080/tfs/你的集合名称/_apis/wit/globallists - 检查全局列表是否存在条目数量异常庞大的情况,或字段配置中数值类型的范围设置是否超出常规整数区间
- 通过REST API尝试导出全局列表:
- 调整Web服务缓冲配置
- 找到
ClientService.asmx对应的web.config文件,默认路径:C:\Program Files\Azure DevOps Server 2020\Application Tier\Web Services\WorkItemTracking\v8.0 - 在
<system.web>节点中添加/修改以下配置以禁用缓冲:<httpRuntime enableKernelOutputCache="false" disableKernelCache="true" maxRequestLength="2097151" /> <pages buffer="false" /> - 保存配置后重启Azure DevOps Server Application Pool
- 找到
验证修复
执行witadmin exportwitd /collection:http://你的服务器地址:8080/tfs/你的集合名称 /p:你的项目名称 /n:Bug命令,确认是否能正常导出工作项类型定义。
内容的提问来源于stack exchange,提问作者Xel
相关产品推荐
相关产品推荐

