restsharp/RestSharp · error · ArgumentException
Failed to put file as content because POST parameters were…
Error message
Failed to put file as content because POST parameters were added
What it means
ValidateParameters throws when AlwaysSingleFileAsContent is enabled and the request also has POST/content parameters (parameters that go into the body for POST-like methods, via Parameters.GetContentParameters). A single-file-as-content body cannot coexist with other form/post parameters because there is nowhere to put them.
Solutions
- Remove the POST/content parameters before using single-file-as-content, or move them to query string / headers / URL segments.
- If you need fields plus a file, use multipart (AlwaysMultipartFormData) instead of AlwaysSingleFileAsContent.
- Audit request.Parameters for ParameterType.GetOrPost entries before enabling the single-file mode.
Example fix
// before
request.AlwaysSingleFileAsContent = true;
request.AddParameter("field", "value"); // post parameter
request.AddFile("file", bytes, "f.bin"); // throws
// after
request.AlwaysSingleFileAsContent = true;
// move fields to query string instead:
request.AddQueryParameter("field", "value");
request.AddFile("file", bytes, "f.bin"); Defensive patterns
Strategy: validation
Validate before calling
if (request.AlwaysSingleFileAsContent) {
var hasPostParams = request.Parameters.GetContentParameters(request.Method).Any();
if (hasPostParams)
throw new InvalidOperationException("Remove POST parameters before single-file-as-content upload");
}
request.AddFile(name, bytes, fileName); Prevention
- Use query parameters or headers for metadata when uploading a file as raw content.
- Switch to multipart if you need form fields alongside the file.
- Check Parameters for GetOrPost entries before enabling single-file mode.
When it happens
Trigger: Setting AlwaysSingleFileAsContent = true, adding POST parameters (e.g. AddParameter for body-bound parameters accepted by the HTTP method), then adding a file or executing the request.
Common situations: Converting a form-post request that included field parameters into a raw file upload without removing the fields; adding metadata parameters alongside a single-file content upload.
Related errors
- Failed to put file as content because body parameters were…
- Failed to put file as content because flag…
- AdvancedResponseWriter is not null. Only one response…
- Both BaseUrl and Resource are empty
- ResponseWriter is not null. Only one response writer can be…
AI-assisted analysis of restsharp/RestSharp@6a50821692 (2026-08-13).
Data as JSON: /api/errors/bfbe6cef788aa3f0.
Report an issue: GitHub.
Appendix: source
Thrown at src/RestSharp/Request/RestRequestExtensions.File.cs:82
string name,
Func<Stream> getFile,
string fileName,
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)