diff --git a/Minio/V4Authenticator.cs b/Minio/V4Authenticator.cs index e70985d14..7bb63a502 100644 --- a/Minio/V4Authenticator.cs +++ b/Minio/V4Authenticator.cs @@ -406,22 +406,22 @@ private string GetCanonicalRequest(IRestRequest request, } canonicalStringList.AddLast(path[0]); string query = string.Empty; - Dictionary queryParams = new Dictionary(); + var queryParams = new List>(); foreach (var p in request.Parameters) { if (p.Type == ParameterType.QueryString){ - queryParams.Add((string)p.Name, Uri.EscapeDataString((string)p.Value)); + queryParams.Add(new KeyValuePair(p.Name, Uri.EscapeDataString((string)p.Value))); } } var sb1 = new StringBuilder(); - var queryKeys = new List(queryParams.Keys); - queryKeys.Sort(StringComparer.Ordinal); - foreach (var p in queryKeys) + queryParams = queryParams.OrderBy(_ => _.Key) + .ThenBy(_ => _.Value).ToList(); + foreach (var p in queryParams) { if (sb1.Length > 0) sb1.Append("&"); - sb1.AppendFormat("{0}={1}", p, queryParams[p]); + sb1.AppendFormat("{0}={1}", p.Key, p.Value); } query = sb1.ToString(); canonicalStringList.AddLast(query);