restsharp/RestSharp · error · ArgumentException
A default parameters with the same name has already been add
Error message
A default parameters with the same name has already been added
What it means
Thrown by DefaultParameters.AddParameter when AllowMultipleDefaultParametersWithSameName is false (the default) and a non-header, non-multiparameter default parameter with the same name already exists in the collection. Prevents accidental silent overwrite of defaults.
Source
Thrown at src/RestSharp/Parameters/DefaultParameters.cs:37
public sealed class DefaultParameters(ReadOnlyRestClientOptions options) : ParametersCollection {
/// <summary>
/// Safely add a default parameter to the collection.
/// </summary>
/// <param name="parameter">Parameter to add</param>
/// <returns></returns>
/// <exception cref="NotSupportedException"></exception>
/// <exception cref="ArgumentException"></exception>
[MethodImpl(MethodImplOptions.Synchronized)]
public DefaultParameters AddParameter(Parameter parameter) {
if (parameter.Type == ParameterType.RequestBody)
throw new NotSupportedException("Cannot set request body using default parameters. Use Request.AddBody() instead.");
if (!options.AllowMultipleDefaultParametersWithSameName &&
parameter.Type != ParameterType.HttpHeader &&
!MultiParameterTypes.Contains(parameter.Type) &&
this.Any(x => x.Name == parameter.Name)) {
throw new ArgumentException("A default parameters with the same name has already been added", nameof(parameter));
}
Parameters.Add(parameter);
return this;
}
/// <summary>
/// Safely removes all the default parameters with the given name and type.
/// </summary>
/// <param name="name">Parameter name</param>
/// <param name="type">Parameter type</param>
/// <returns></returns>
[PublicAPI]
[MethodImpl(MethodImplOptions.Synchronized)]
public DefaultParameters RemoveParameter(string name, ParameterType type) {
Parameters.RemoveAll(x => x.Name == name && x.Type == type);
View on GitHub (pinned to 6a50821692)
Solutions
- Call client.RemoveParameter(name, type) before re-adding, or use AddOrUpdateDefaultParameter if available.
- Set RestClientOptions.AllowMultipleDefaultParametersWithSameName = true if duplicates are genuinely intended.
- Deduplicate the source dictionary before adding default parameters.
Example fix
// before
foreach (var kvp in dict)
client.AddDefaultQueryParameter(kvp.Key, kvp.Value); // throws on duplicate key
// after
foreach (var g in dict.GroupBy(x => x.Key))
client.AddOrUpdateDefaultQueryParameter(g.Key, g.Last().Value); Defensive patterns
Strategy: validation
Validate before calling
if (!options.AllowMultipleDefaultParametersWithSameName && defaults.Any(p => p.Name == name)) throw new ArgumentException("Duplicate default parameter name"); Try / catch
try { client.AddDefaultQueryParameter(name, value); } catch (ArgumentException ex) when (ex.Message.Contains("same name has already been added")) { /* use AddOrUpdate or remove first */ } Prevention
- Use AddOrUpdateDefaultParameter when re-registration is possible.
- Set AllowMultipleDefaultParametersWithSameName = true if duplicates are intended.
- Deduplicate source dictionaries before bulk-adding default parameters.
When it happens
Trigger: Calling client.AddDefaultQueryParameter / AddDefaultUrlSegment / AddDefaultCookie (or AddParameter) twice with the same name while AllowMultipleDefaultParametersWithSameName is false.
Common situations: Looping over a dictionary and adding default query parameters without deduplication; re-registering a default segment after config change; framework re-initialization calling AddDefaultParameter twice.
Related errors
- Cannot set request body using default parameters. Use Reques
- Failed to put file as content because POST parameters were a
- Request resource doesn't contain a valid scheme for an empty
- AdvancedResponseWriter is not null. Only one response writer
- 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/81efd0dd7ebe7db3.
Report an issue: GitHub.