sau khoảng một phút và một nửa
Có vấn đề của bạn. Đây là một ứng dụng web? Một phút rưỡi là thời gian rất dài để ứng dụng web phản hồi yêu cầu. Đủ lâu để nó không thực sự đáng tham gia vào nhiều thủ đoạn khác nhau để biến nó thành loại công việc.
Bạn sẽ muốn giảm tải quá trình này trở nên không đồng bộ hơn với chính ứng dụng web. Bản chất của các ứng dụng web là họ sẽ nhận được yêu cầu và phản hồi kịp thời. Những gì bạn có ở đây là một quy trình chạy dài không thể đáp ứng kịp thời. Ứng dụng web có thể tạo điều kiện tương tác với dữ liệu, nhưng không trực tiếp xử lý việc xử lý chúng trong yêu cầu/phản hồi trực tiếp.
Ứng dụng web tương tác với quy trình như thế nào? Nó chỉ bắt đầu nó, hay nó cung cấp thông tin cho quá trình để bắt đầu? Tôi muốn đề nghị rằng quá trình tự nó được xử lý bởi một cái gì đó giống như một dịch vụ Windows hoặc có lẽ là một ứng dụng giao diện điều khiển. Các de-coupled từ các ứng dụng web, thì càng tốt. Bây giờ, vì tôi không biết gì về quá trình này, tôi đang đưa ra một vài giả định về hành vi của nó ...
Ứng dụng web có thể nhận được yêu cầu bắt đầu quá trình, cùng với mọi thông tin cần thiết cho quá trình. Nó có thể lưu trữ điều này trong một cơ sở dữ liệu với một giá trị trạng thái (đang chờ xử lý, xếp hàng đợi, vv) và sau đó trả lời người dùng (một cách kịp thời) rằng yêu cầu đã được nhận và quá trình đã được xếp hàng đợi. Ứng dụng web có thể có một trang kiểm tra trạng thái để người dùng có thể xem quy trình đang hoạt động như thế nào (nếu nó bắt đầu, số lượng bản ghi đã trải qua, v.v.).
Ứng dụng ngoại tuyến (Windows Service, et al) sẽ chỉ giám sát cơ sở dữ liệu đó để xử lý dữ liệu mới xếp hàng. Khi nó nhìn thấy nó, nó cập nhật trạng thái (chạy, xử lý, v.v.) và cung cấp bất kỳ phản hồi có liên quan nào trong quá trình (số lượng bản ghi được xử lý, v.v.) bằng cách cập nhật dữ liệu đó. Vì vậy, ứng dụng ngoại tuyến và ứng dụng web đều tương tác với cùng một dữ liệu, nhưng không theo cách chặn luồng của ứng dụng web và ngăn phản hồi cho người dùng.
Khi quá trình kết thúc, trạng thái được cập nhật lại. Ứng dụng web có thể cho biết rằng ứng dụng đã hoàn tất và cung cấp liên kết để tải xuống kết quả.Quá trình ngoại tuyến thậm chí có thể gửi email cho người dùng khi hoàn thành hoặc có thể ứng dụng web có thể có một số loại hệ thống thông báo (tôi đang hình dung các biểu tượng thông báo nhỏ trên Facebook), cảnh báo người dùng sẽ có hoạt động mới.
Bằng cách này, luồng không bị chặn, người dùng có thể tiếp tục tương tác với ứng dụng (nếu có bất kỳ thứ gì tương tác), v.v. Và bạn cũng nhận được các lợi ích bổ sung khác. Ví dụ, kết quả của quá trình này do đó được lưu trong cơ sở dữ liệu và tự động theo dõi lịch sử.
phiên bản nào của Windows Server (IIS) là máy chủ trực tiếp sử dụng? –
Tôi tin rằng đó là 7.5. – Rivka
Tôi đã có cùng một vấn đề và nó đã xảy ra sau ít hơn một giây. Giống như trong trường hợp của bạn, nó chỉ xuất hiện trên một máy chủ nhất định. Hóa ra là nó chỉ xảy ra miễn là chúng ta có đường ống ('|') trong URL của yêu cầu GET. Khi loại bỏ hoặc mã hóa các đường ống, vấn đề không còn xuất hiện nữa. – chiccodoro