Tôi có một phương pháp đơn giản hành động như thế này:ASP.NET WebAPI đầu ra được 40 × chậm hơn khi byte đơn được thêm vào phản ứng
public class TestApiController : ApiController
{
[Route("api/string"), HttpGet]
public string GetString(int length)
{
return new string('x', length);
}
}
Thời gian đáp ứng (theo quan sát của Fiddler):
GET /api/string?length=1186
0.008
0.007
0.007
...
GET /api/string?length=1187
0.208
0.212
0.205
...
Tức là, bằng cách thêm một byte vào phản hồi, thời gian xử lý tăng lên 40 ×.
Hành vi này hoàn toàn nhất quán và tôi quan sát nó cả trong Web Server của Visual Studio và trong IIS 8.5 (tuy nhiên, ngưỡng kích thước phản hồi cụ thể hơi khác nhau).
Tại sao nó sẽ hoạt động như thế này?
EDIT: Trong trường hợp của tôi, ESET NOD32 chống virus kiểm tra giao thức HTTP là thủ phạm.
Dường như vấn đề nằm trong môi trường của bạn, ở đâu đó. Tôi đã thử phương pháp hành động này trên máy tính xách tay của tôi và nó luôn luôn chỉ mất một vài phần nghìn giây cho mỗi yêu cầu cho tất cả các độ dài hợp lý (50 - 500000). Vì vậy, việc cung cấp các chi tiết về môi trường sẽ thực sự giúp ích (các phiên bản os, websever, .net và asp.net, các cấu hình ứng dụng và máy chủ). –
có sự khác biệt về thời gian phản hồi khác với 1186 và 1187 không? –
tắt antywirus và kiểm tra. Đây không phải là trò đùa, có khả năng rằng nó không biết nó là gì và nó đang làm cho quét lớn hơn –