Tôi có một vài hành động tiện ích trả lại kết quả đầu ra văn bản qua return Content("my text","text/plain")
.Truyền văn bản đầu ra cho hành động dài hạn?
Đôi khi, các phương pháp này mất vài phút để chạy (tức là phân tích nhật ký, bảo trì cơ sở dữ liệu).
Tôi muốn sửa đổi phương pháp hành động của mình để thay vì trả lại tất cả đầu ra cùng một lúc, văn bản thay vào đó được truyền trực tiếp tới ứng dụng khi nó sẵn sàng.
Dưới đây là một ví dụ contrived:
public ActionResult SlowText()
{
var sb = new System.Text.StringBuilder();
sb.AppendLine("This happens quickly...");
sb.AppendLine("Starting a slow 10 second process...");
System.Threading.Thread.Sleep(10000);
sb.AppendLine("All done with 10 second process!");
return Content(sb.ToString(), "text/plain");
}
Theo văn bản, hành động này sẽ trở lại ba dòng văn bản sau 10 giây. Những gì tôi muốn là một cách để giữ cho dòng phản hồi mở, và trả về hai dòng đầu tiên ngay lập tức, và sau đó là dòng thứ ba sau 10 giây.
Tôi nhớ đã thực hiện việc này 10+ năm trước trong ASP 3.0 cổ điển bằng cách sử dụng đối tượng Phản hồi. Có cách nào chính thức, thân thiện với MVC để thực hiện việc này không?
-
Cập nhật: sử dụng Razor .cshtml trong ứng dụng; nhưng không sử dụng bất kỳ chế độ xem nào (chỉ ContentResult
) cho những hành động này.
Dao cạo hoặc aspx? Sự khác biệt là công cụ Razor không cho phép phát trực tuyến. – Buildstarted
chúng tôi chạy vào cùng một vấn đề và chúng tôi cũng trực tiếp sử dụng Response.OutputStream trong bộ điều khiển. Tôi tò mò muốn biết nếu bạn tìm thấy bất kỳ giải pháp? –