VSTS/TFS 2017卸载自定义扩展后重装提示已存在问题求助
解决TFS 2017卸载扩展后重装提示已存在的问题
针对你遇到的TFS 2017版本(15.117.26714.0)卸载自定义扩展后残留记录的问题,我整理了几个经过验证的解决方案,你可以逐一尝试:
1. 修复DELETE API的认证问题
你之前调用DELETE API时遇到的TF400813错误,核心原因是请求没有携带有效的身份认证信息。TFS 2017的Gallery API需要授权访问,你可以按以下方式调整请求:
- 使用个人访问令牌(PAT)认证:
先在TFS中生成一个拥有Extensions (Manage)权限的PAT,然后将其进行Base64编码(格式为:your_pat_here,注意前面的冒号),再添加到请求头中:curl -X DELETE "http://{domain}/tfs/_apis/gallery/publishers/{publisher}/extensions/{extensionId}?api-version=4.1" \ -H "Authorization: Basic {base64_encoded_pat}" \ -H "Content-Type: application/json" - 使用域账号认证:
如果是域环境,直接用-u参数携带域账号密码:
注意:一定要加上curl -X DELETE "http://{domain}/tfs/_apis/gallery/publishers/{publisher}/extensions/{extensionId}?api-version=4.1" \ -u domain\your_username:your_passwordapi-version=4.1参数,这是TFS 2017对应的API版本,缺失可能导致请求异常。
2. 清理服务器端扩展文件与缓存
客户端缓存清理无效的话,需要从服务器端入手:
- 找到TFS应用层的扩展安装目录,默认路径为:
C:\Program Files\Microsoft Team Foundation Server 15.0\Application Tier\Web Services\_extensions
在这个目录下找到对应{publisher}和{extensionId}的文件夹,直接删除。 - 重启TFS相关服务:打开服务管理器,重启
Team Foundation Background Job Agent和World Wide Web Publishing Service(IIS服务),强制刷新服务器端缓存。
3. 检查扩展权限与状态
- 确认你使用的账号拥有TFS服务器管理员权限,或者至少拥有
Manage extensions的权限,部分扩展需要高权限才能彻底删除。 - 先通过GET API查询扩展的当前状态:
如果返回的curl "http://{domain}/tfs/_apis/gallery/publishers/{publisher}/extensions/{extensionId}?api-version=4.1" -u domain\your_username:your_passwordstate是Uninstalled,可以尝试先调用POST API将其状态改为Disabled,再执行DELETE操作。
4. 手动清理数据库(谨慎操作)
如果以上方法都无效,作为最后手段,可以尝试手动清理TFS数据库的残留记录:
注意:操作前务必备份TFS数据库,避免数据丢失!
- 打开SQL Server Management Studio,连接到TFS的配置数据库(默认名为
Tfs_Configuration)。 - 执行以下查询找到目标扩展的记录:
SELECT * FROM tbl_Extension WHERE PublisherName = '{publisher}' AND ExtensionName = '{extensionId}' - 确认记录无误后,执行删除语句:
DELETE FROM tbl_Extension WHERE PublisherName = '{publisher}' AND ExtensionName = '{extensionId}' - 重启TFS服务,再次查询API确认记录已清除。
内容的提问来源于stack exchange,提问作者soulxy
相关产品推荐
相关产品推荐

