使用C#调用Azure Custom Translator API上传训练数据时遇400错误
解决Custom Translator API上传ComboFile的400错误及请求体结构说明
400 Bad Request错误排查要点
- 检查Excel文件格式:ComboFile必须严格遵循模板,要有Source和Target两列,列名不能错,不能有合并单元格、无效空行(表头外),保存为
.xlsx格式,别用旧版.xls。 - 验证文件容量:单个ComboFile不能超100MB,总语料对不能超过500万条。
- 核对请求体参数:
DocumentDetails里的DocumentType必须设为Combo,SourceLanguage和TargetLanguage要和项目语言对完全匹配(比如项目是en-zh,就不能写成zh-en或带区域的en-US/zh-CN)。 - 排查文件内容:语料里不能有特殊控制字符,手动修改过的文件要确认没有乱码。
- 确认权限令牌:虽然之前能创建工作区/项目,但要检查
TranslatorText.ReadWrite权限是否有效,令牌有没有过期。
请求体中Files和DocumentDetails的结构说明
Files结构
是一个数组,每个元素对应一个待上传文件,结构示例:
{ "Name": "business_combo.xlsx", // 带正确后缀的文件名 "Content": "base64编码的文件二进制内容", // 必须转成Base64字符串,不能直接传二进制 "StorageSource": "AzureBlob" // 固定值,无需修改 }
如果上传多个ComboFile,数组里可以添加多个符合格式的对象。
DocumentDetails结构
用于描述文件的元数据,必须和项目、文件类型匹配,结构示例:
{ "DocumentType": "Combo", // ComboFile专属固定值 "SourceLanguage": "en", // 项目对应的源语言ISO 639-1两位代码 "TargetLanguage": "zh", // 项目对应的目标语言ISO 639-1两位代码 "Name": "业务场景中英对照语料", // 自定义显示名称 "Description": "电商领域产品描述语料", // 可选,文档描述 "WorkspaceId": "your_workspace_id", // 已创建的工作区ID "ProjectId": "your_project_id" // 已创建的项目ID }
注意:语言代码必须用两位标准码,不能带区域后缀(比如用en而非en-US)。
调试小技巧
- 抓包核对请求:用Fiddler或VS调试工具查看完整请求体,对比结构是否有拼写错误、参数缺失。
- 测试最小样本:先上传只有2-3条有效语料的Excel,排除文件内容本身的问题。
内容的提问来源于stack exchange,提问作者Jeffrey Lee
相关产品推荐
相关产品推荐

