Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

FormUrlEncodedJson calls wrong overload of Error.Argument

Đang mở
#431 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
csharp
Lĩnh vực
api, backend

Hướng nghiên cứu

Bắt đầu trong src/System.Net.Http.Formatting/Formatting/FormUrlEncodedJson.cs, đặc biệt là FormUrlEncodedJson.AddToArray, và so sánh các lệnh gọi Error.Argument của nó với các overload trong src/Common/Error.cs. Xác nhận rằng các lệnh gọi chỉ sử dụng một chuỗi định dạng và các đối số định dạng sẽ phân giải đến overload mong muốn; hoàn tất khi chuỗi định dạng không còn bị coi là tên tham số.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

src/System.Net.Http.Formatting/Formatting/FormUrlEncodedJson.cs contains several Error.Argument calls that do not specify the parameter name. For example, in the FormUrlEncodedJson.AddToArray method:

https://github.com/aspnet/AspNetWebStack/blob/1231b77d79956152831b75ad7f094f844251b97f/src/System.Net.Http.Formatting/Formatting/FormUrlEncodedJson.cs#L400-L404

The arguments in this call are a format string from resources, and a string to use as a format argument. The call is intended to go to the internal static ArgumentException Argument(string messageFormat, params object[] messageArgs) method that is defined here:

https://github.com/aspnet/AspNetWebStack/blob/a55e96a451393aa854556ac9feb2d80e81988a9c/src/Common/Error.cs#L37-L40

Instead, it goes to the internal static ArgumentException Argument(string parameterName, string messageFormat, params object[] messageArgs) method that is defined here:

https://github.com/aspnet/AspNetWebStack/blob/a55e96a451393aa854556ac9feb2d80e81988a9c/src/Common/Error.cs#L49-L52

The format string that was read from Properties.Resources.FormUrlEncodedMismatchingTypes thus becomes misused as the parameter name.

I have not tried to reproduce this bug in practice, but the incorrect call is evident from the IL disassembly of lib/netstandard2.0/System.Net.Http.Formatting.dll in the Microsoft.AspNet.WebApi.Client 6.0.0 package:

  IL_001b:  call       string System.Net.Http.Properties.Resources::get_FormUrlEncodedMismatchingTypes()
  IL_0020:  ldarg.1
  IL_0021:  ldarg.1
  IL_0022:  ldlen
  IL_0023:  conv.i4
  IL_0024:  ldc.i4.1
  IL_0025:  sub
  IL_0026:  call       string System.Net.Http.Formatting.FormUrlEncodedJson::BuildPathString(string[],
                                                                                             int32)
  IL_002b:  call       !!0[] [netstandard]System.Array::Empty<object>()
  IL_0030:  call       class [netstandard]System.ArgumentException System.Web.Http.Error::Argument(string,
                                                                                                   string,
                                                                                                   object[])
  IL_0035:  throw

In the Microsoft.AspNet.WebApi.Client 4.0.20505 package (released on 31 May 2012), the FormUrlEncodedJson.AddToArray method did not have this bug yet. In the Microsoft.AspNet.WebApi.Client 4.0.20710 package (released on 11 August 2012), the method had the bug. I think the bug was introduced by commit f19f4683cc36ebb2666fa36f6dcd1825f4b214aa in May 2012.

Because the bug is so old and is not known to cause any problems in practice, I suspect you might decide not to fix it.

Ngôn ngữ chính
C#
Star
897
Fork
358
Merge trung bình
40 phút
Pull request đã merge (30 ngày)
1

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aspnet/AspNetWebStack

Tất cả issue của aspnet/AspNetWebStack

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.