从Bitbucket Server迁移至Bitbucket.org后C#调用Atlassian.Stash报解析错误
报错根因
你遇到的Unexpected character encountered while parsing value: <. Path '', line 0, position 0错误,本质是API请求返回的内容为HTML页面而非预期的JSON格式,JSON解析器读取到HTML开头的<字符时无法处理,直接抛出异常。
触发该问题的核心原因是你使用的依赖和云服务不兼容:
Atlassian.Stash是专门适配Bitbucket Server(原名为Stash) 的C# API封装库,而你迁移后的Bitbucket.org是云版本Bitbucket,二者的API路径、认证规则、响应结构完全不通用。- Bitbucket Server的API基准路径为
/rest/api/1.0/这类格式,Bitbucket Cloud的API基准路径为/2.0/,用旧的Server端客户端请求云服务,接口要么返回404页面,要么返回权限验证失败的HTML页面,无法被JSON解析器识别。
临时排查方式
你可以在catch块中捕获HTTP响应的完整原始内容,或者通过抓包工具获取请求返回的HTML内容,即可快速确认是路径错误还是认证权限错误。
解决方案
- 替换依赖包:弃用仅适配Server端的
Atlassian.Stash,改用适配Bitbucket Cloud的C# SDK,若自行封装HTTP请求,需要适配云版本的API规范,注意选择支持.NET Framework 4.8的依赖版本。 - 调整认证逻辑:Bitbucket Cloud已经不支持直接使用账号密码调用API,需要创建应用密码搭配账号使用,或者切换为OAuth2认证方式,原有直接传账号密码的逻辑已失效。
- 调整业务代码:Bitbucket Cloud的提交记录查询接口的传参规则、返回结构和Server端完全不同,原有针对Server端的实体类、响应封装类无法直接复用,需要按照云版本的接口规范重新调整代码逻辑。
内容的提问来源于stack exchange,提问作者mik1971
相关产品推荐
相关产品推荐

