restsharp/RestSharp · error · ArgumentException
ResponseWriter is not null. Only one response writer can be
Error message
ResponseWriter is not null. Only one response writer can be used.
What it means
The symmetric guard to the ResponseWriter setter: AdvancedResponseWriter's setter throws ArgumentException if ResponseWriter has already been assigned. RestSharp enforces that only one response writer mode (simple stream vs. full message) is active on a single RestRequest.
Source
Thrown at src/RestSharp/Request/RestRequest.cs:237
public Func<Stream, Stream?>? ResponseWriter {
get;
set {
if (AdvancedResponseWriter != null) {
throw new ArgumentException("AdvancedResponseWriter is not null. Only one response writer can be used.");
}
field = value;
}
}
/// <summary>
/// Set this to handle the response stream yourself, based on the response details
/// </summary>
public Func<HttpResponseMessage, RestRequest, RestResponse>? AdvancedResponseWriter {
get;
set {
if (ResponseWriter != null) {
throw new ArgumentException("ResponseWriter is not null. Only one response writer can be used.");
}
field = value;
}
}
/// <summary>
/// Request-level interceptors. Will be combined with client-level interceptors if set.
/// </summary>
public List<Interceptor>? Interceptors { get; set; }
/// <summary>
/// Adds a parameter object to the request parameters
/// </summary>
/// <param name="parameter">Parameter to add</param>
/// <returns></returns>
public RestRequest AddParameter(Parameter parameter) => this.With(x => x.Parameters.AddParameter(parameter));
View on GitHub (pinned to 6a50821692)
Solutions
- Use only AdvancedResponseWriter when you need the full HttpResponseMessage, and leave ResponseWriter null.
- If a RestRequest instance is reused, null out the previously set writer before assigning the other.
- Centralize writer selection in one place to avoid conflicting assignments.
Example fix
// before request.ResponseWriter = SimpleWriter; request.AdvancedResponseWriter = AdvancedHandler; // throws // after request.ResponseWriter = null; request.AdvancedResponseWriter = AdvancedHandler;
Defensive patterns
Strategy: validation
Validate before calling
if (request.ResponseWriter is null)
request.AdvancedResponseWriter = AdvancedHandler;
else
throw new InvalidOperationException("ResponseWriter already set; cannot set AdvancedResponseWriter"); Prevention
- Use only AdvancedResponseWriter when you need the full HttpResponseMessage.
- Clear ResponseWriter before assigning the advanced writer on reused requests.
- Keep writer selection in a single builder method.
When it happens
Trigger: Assigning request.AdvancedResponseWriter after request.ResponseWriter was already set to a non-null value.
Common situations: Building requests in shared/factory methods that set ResponseWriter, then a caller adds AdvancedResponseWriter; migrating from the simple writer to the advanced one without clearing the former.
Related errors
- AdvancedResponseWriter is not null. Only one response writer
- Failed to put file as content because flag AlwaysMultipartFo
- Failed to put file as content because body parameters were a
- Failed to put file as content because POST parameters were a
- Both BaseUrl and Resource are empty
AI-assisted analysis of restsharp/RestSharp@6a50821692 (2026-08-13).
Data as JSON: /api/errors/bc2d5dd5d1409b86.
Report an issue: GitHub.