Chúng tôi có một ứng dụng cửa sổ gọi các phương thức dịch vụ web để truy cập cơ sở dữ liệu. Chúng tôi đã tìm thấy trường hợp chúng tôi thực hiện cuộc gọi dịch vụ web không đồng bộ dài (hơn 15 giây) tới dịch vụ WCF trên IIS. Nếu giao diện người dùng thực hiện các cuộc gọi dịch vụ web khác, chặn (đó là mã cũ) trong khi điều đó đang diễn ra, thì các cuộc gọi bổ sung đó sẽ chặn cho đến sau khi cuộc gọi không đồng bộ ban đầu hoàn tất.
Điều này không xảy ra khi cả giao diện người dùng và dịch vụ web đều đang chạy trong Visual Studio với IIS Express: Cuộc gọi chặn diễn ra nhanh chóng và tất cả nội dung đó hoàn thành trước khi cuộc gọi không đồng bộ dài kết thúc.
Tất cả các dịch vụ web đều có những điều sau đây:
<serviceThrottling
maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />
Ngoài ra, maxConnections="500" ở mọi nơi.
Chúng tôi muốn làm cho IIS xử lý các cuộc gọi dịch vụ web đồng thời này giống như cách IIS Express thực hiện đồng thời.
...
Nếu nó giúp được thì tất cả đều hợp lý: Chúng tôi thực hiện tìm kiếm đồ vật. Tìm kiếm trả về 50 mục hàng đầu (theo mặc định) đáp ứng tiêu chí và đồng thời chúng tôi thực hiện lệnh gọi không đồng bộ để đếm(*) trên cùng một truy vấn. Truy vấn đếm có thể mất nhiều thời gian. Người dùng nhấn mạnh rằng đôi khi họ muốn biết tổng số là bao nhiêu, nhưng họ thường muốn có thể mở các đối tượng trong danh sách kết quả rất lâu trước khi số đếm quay trở lại. Mở các đối tượng là nơi thực hiện các cuộc gọi dịch vụ web đồng bộ. Trước đây, kết quả tìm kiếm và số lượng đều là một phần của cùng một phương thức dịch vụ web.