You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestSharp升级后AddFile不支持FileParameter入参无迁移文档如何解决

RestSharp 高版本文件上传API迁移方案

问题原因

你碰到的报错本质是RestSharp v107+大版本重构后,官方文档未同步更新导致的API不匹配,核心变动如下:

  • 旧版本直接调用restRequest.Files.Add(FileParameter)的写法已完全废弃,当前版本Files集合为只读状态,不支持直接新增元素
  • 文档标注的接收单个FileParameter参数的AddFile重载已在正式版中移除,运行时/编译时抛出的

No overload for method 'AddFile' takes 1 arguments

是符合当前版本实际API表现的,和未更新的文档描述存在矛盾。

  • 旧版FileParameter类的Writer属性已被重构为内部访问属性,不对外暴露,不存在公开的迁移路径,不需要强行找该属性的替代。

适配写法

根据你的文件来源选择对应重载即可,完全不需要手动构造FileParameter实例再传入:

  • 本地上传磁盘文件
// 参数顺序:表单字段名、文件本地全路径、文件MIME类型
restRequest.AddFile("upload_file", @"C:\local\path\to\demo.jpg", "image/jpeg");
  • 上传字节数组形式的文件
byte[] fileContent = GetFileBytesFromSource();
// 参数顺序:表单字段名、文件字节数组、上传后展示的文件名、文件MIME类型
restRequest.AddFile("upload_file", fileContent, "demo.jpg", "image/jpeg");
  • 上传流形式的文件
Stream fileStream = GetFileStreamFromSource();
// 参数顺序:表单字段名、返回文件流的委托、上传后展示的文件名、文件MIME类型
restRequest.AddFile("upload_file", () => fileStream, "demo.jpg", "image/jpeg");
  • 如果你已经持有旧逻辑生成的FileParameter实例,直接读取其公开属性传入对应重载即可:
restRequest.AddFile(
    file.Name,
    file.GetFileBytes,
    file.FileName,
    file.ContentType
);

补充说明

上述写法适配RestSharp 107、108、109、110所有当前主流高版本,不需要额外引入兼容包,也不需要通过反射访问内部属性。

内容的提问来源于stack exchange,提问作者Kris Craig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:54:33