{"record":{"id":"bc2d5dd5d1409b86","repo":"restsharp/RestSharp","slug":"responsewriter-is-not-null-only-one-response-writ","errorCode":null,"errorMessage":"ResponseWriter is not null. Only one response writer can be used.","messagePattern":"ResponseWriter is not null\\. Only one response writer can be used\\.","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/RestSharp/Request/RestRequest.cs","lineNumber":237,"sourceCode":"    public Func<Stream, Stream?>? ResponseWriter {\n        get;\n        set {\n            if (AdvancedResponseWriter != null) {\n                throw new ArgumentException(\"AdvancedResponseWriter is not null. Only one response writer can be used.\");\n            }\n\n            field = value;\n        }\n    }\n\n    /// <summary>\n    /// Set this to handle the response stream yourself, based on the response details\n    /// </summary>\n    public Func<HttpResponseMessage, RestRequest, RestResponse>? AdvancedResponseWriter {\n        get;\n        set {\n            if (ResponseWriter != null) {\n                throw new ArgumentException(\"ResponseWriter is not null. Only one response writer can be used.\");\n            }\n\n            field = value;\n        }\n    }\n\n    /// <summary>\n    /// Request-level interceptors. Will be combined with client-level interceptors if set.\n    /// </summary>\n    public List<Interceptor>? Interceptors { get; set; }\n\n    /// <summary>\n    /// Adds a parameter object to the request parameters\n    /// </summary>\n    /// <param name=\"parameter\">Parameter to add</param>\n    /// <returns></returns>\n    public RestRequest AddParameter(Parameter parameter) => this.With(x => x.Parameters.AddParameter(parameter));\n","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/restsharp/RestSharp/blob/6a5082169257438cd085f822f050d93256a8e499/src/RestSharp/Request/RestRequest.cs#L219-L255","documentation":"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.","triggerScenarios":"Assigning request.AdvancedResponseWriter after request.ResponseWriter was already set to a non-null value.","commonSituations":"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.","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."],"exampleFix":"// before\nrequest.ResponseWriter       = SimpleWriter;\nrequest.AdvancedResponseWriter = AdvancedHandler; // throws\n\n// after\nrequest.ResponseWriter = null;\nrequest.AdvancedResponseWriter = AdvancedHandler;","handlingStrategy":"validation","validationCode":"if (request.ResponseWriter is null)\n    request.AdvancedResponseWriter = AdvancedHandler;\nelse\n    throw new InvalidOperationException(\"ResponseWriter already set; cannot set AdvancedResponseWriter\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["request","response-writer","configuration","argument","mutual-exclusion"],"backgroundTag":null,"analyzedSha":"6a5082169257438cd085f822f050d93256a8e499","analyzedAt":"2026-08-13T20:38:25.807Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}