restsharp/RestSharp · error · ArgumentException
Failed to put file as content because body parameters were…
Error message
Failed to put file as content because body parameters were added
What it means
ValidateParameters throws when AlwaysSingleFileAsContent is enabled and the request already has a ParameterType.RequestBody parameter (a body added via AddJsonBody/AddXmlBody/AddStringBody/AddBody). A raw single-file body and a serialized request body cannot both occupy the HTTP body.
Solutions
- Do not add a request body when using AlwaysSingleFileAsContent; the file IS the body.
- If you need both a structured body and a file, use multipart form data (remove AlwaysSingleFileAsContent).
- Check request.TryGetBodyParameter / Parameters for RequestBody entries before enabling single-file mode.
Example fix
// before
request.AddJsonBody(payload);
request.AlwaysSingleFileAsContent = true;
request.AddFile("file", bytes, "f.bin"); // throws
// after
// drop the JSON body; the file is the body:
request.AlwaysSingleFileAsContent = true;
request.AddFile("file", bytes, "f.bin"); Defensive patterns
Strategy: validation
Validate before calling
if (request.AlwaysSingleFileAsContent) {
var hasBody = request.Parameters.Any(p => p.Type == ParameterType.RequestBody);
if (hasBody)
throw new InvalidOperationException("Remove the request body before single-file-as-content upload");
}
request.AddFile(name, bytes, fileName); Prevention
- The file is the body in single-file-content mode; do not add another body.
- Use multipart if a structured body and a file must coexist.
- Call request.TryGetBodyParameter to detect an existing body.
When it happens
Trigger: Setting AlwaysSingleFileAsContent = true, adding a body (AddBody/AddJsonBody/AddXmlBody/AddStringBody), then adding a file or executing the request.
Common situations: Adding a JSON payload and then switching the request to a file-content upload without removing the body; building a request generically where a body and a file both get attached.
Related errors
- Failed to put file as content because flag…
- AdvancedResponseWriter is not null. Only one response…
- Failed to put file as content because POST parameters were…
- ResponseWriter is not null. Only one response writer can be…
- Both BaseUrl and Resource are empty
AI-assisted analysis of restsharp/RestSharp@6a50821692 (2026-08-13).
Data as JSON: /api/errors/030d18585d7f8a37.
Report an issue: GitHub.
Appendix: source
Thrown at src/RestSharp/Request/RestRequestExtensions.File.cs:85
ContentType? contentType = null,
FileParameterOptions? options = null
)
=> request.AddFile(FileParameter.Create(name, getFile, fileName, contentType, options));
internal void ValidateParameters() {
if (!request.AlwaysSingleFileAsContent) return;
var postParametersExists = request.Parameters.GetContentParameters(request.Method).Any();
var bodyParametersExists = request.Parameters.Any(p => p.Type == ParameterType.RequestBody);
if (request.AlwaysMultipartFormData)
throw new ArgumentException("Failed to put file as content because flag AlwaysMultipartFormData is enabled");
if (postParametersExists)
throw new ArgumentException("Failed to put file as content because POST parameters were added");
if (bodyParametersExists)
throw new ArgumentException("Failed to put file as content because body parameters were added");
}
}
}View on GitHub (pinned to 6a50821692)