Tôi cần tăng thời gian chờ yêu cầu cho một hành động điều khiển cụ thể trong ứng dụng của tôi lập trình trong bộ điều khiển.Làm thế nào để thiết lập thời gian chờ yêu cầu cho một hành động điều khiển trên IIS và IIS Express
Làm thế nào để thiết lập thời gian chờ yêu cầu cho một hành động điều khiển trên IIS và IIS Express
Trả lời
Cách tốt nhất mà tôi đã tìm thấy cho đến nay để xử lý một kịch bản chạy dài (nếu ứng dụng của bạn chỉ đơn giản là không thể tránh được việc một) là để trước hết là tạo ra một handler async:
public async Task<IActionResult> About()
{
var cts = new CancellationTokenSource();
cts.CancelAfter(180000);
await Task.Delay(150000, cts.Token);
return View();
}
Trong đoạn trên, chúng tôi đã thêm một mã thông báo hủy để nói rằng phương pháp Async của tôi sẽ hủy sau 180 giây (mặc dù trong ví dụ này nó sẽ không bao giờ trì hoãn lâu hơn 150 giây) Tôi đã thêm thời gian chờ để đảm bảo có giới hạn về thời lượng của tập lệnh chạy.
Nếu bạn chạy điều này, bạn sẽ nhận được Lỗi HTTP 502.3 vì có một khoảng thời gian chờ được đặt trên httpPlatform của 00:02:00.
Để kéo dài thời gian chờ này, hãy truy cập tệp web.config bên trong thư mục wwwroot và thêm thuộc tính requestTimeout = "00:05:00" vào phần tử httpPlatform. Ví dụ:
<httpPlatform requestTimeout="00:05:00" processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
Tập lệnh chạy dài giờ sẽ hoạt động.
Tuy nhiên, điều này có nghĩa là mọi yêu cầu sẽ mất 5 phút để hết giờ, do đó bạn sẽ phải đảm bảo rằng bạn sử dụng thủ thuật Hủy bỏ để hạn chế mọi yêu cầu không đồng bộ trong ứng dụng của bạn. Trong các phiên bản trước của MVC, chúng tôi đã có thuộc tính AsyncTimeOut mà bạn có thể thêm vào bộ điều khiển, nhưng có vẻ như điều này đã bị cắt trong MVC6 See GitHub aspnet/mvc Issue #2044
- 1. Thay đổi thời gian chờ của phiên trên IIS Express?
- 2. Thời gian chờ .NET và IIS cho yêu cầu AJAX riêng lẻ
- 3. Thiết lập SMTP trên IIS Express
- 4. Thời gian chờ yêu cầu IIS trên hoạt động ASP.NET dài
- 5. Làm cách nào để tăng thời gian chờ yêu cầu trong IIS?
- 6. IIS Express 7.5 không xử lý yêu cầu đồng thời
- 7. Thiết lập Kudu Trên IIS
- 8. CLGeocoder làm thế nào để thiết lập thời gian chờ?
- 9. IIS Auto-Start không tắt Thời gian chờ nhàn rỗi
- 10. Thiết lập Django trên IIS
- 11. IIS 8 HTTPS/Yêu cầu SSL gây ra lỗi hết thời gian chờ
- 12. IIS Express Kích hoạt yêu cầu bên ngoài - 503
- 13. Làm thế nào để thiết lập thời gian chờ cho WebBrowser điều hướng sự kiện
- 14. Làm thế nào để thiết lập một công việc cron cho PHP trên IIS?
- 15. Thời gian chờ của phiên làm việc như thế nào trong IIS 7?
- 16. Thời gian phản hồi chậm từ IIS
- 17. Yêu cầu trùng lặp khi gỡ lỗi ASP.NET trên IIS Express
- 18. tắt IIS Express?
- 19. Làm thế nào để thiết lập thời gian chờ cho một dòng C# mã
- 20. Yêu cầu hết thời gian - Yêu cầu hết thời gian
- 21. Làm cách nào để đặt IHttpAsyncHandler hết thời gian chờ?
- 22. Thiết lập một máy chủ Mercurial trên IIS 6
- 23. Xác thực cơ bản trên IIS Express
- 24. Quy trình IIS ASP.net MVC yêu cầu như thế nào?
- 25. Giá trị thời gian chờ thiết lập cho dịch vụ web .NET
- 26. Làm thế nào tôi có thể lập trình xác định nếu một trang IIS đang nhận yêu cầu?
- 27. Làm cách nào để thiết lập IIS để giữ cho ứng dụng của tôi luôn hoạt động?
- 28. Thời gian chờ yêu cầu web
- 29. Bật thiết bị Android để truy cập IIS Express khi đang ở trên cùng một mạng
- 30. Làm thế nào để thiết lập tên miền phụ trên IIS 7
Cảm ơn bạn đã trả lời rất thú vị, nhưng điều này là không thể chấp nhận được cho vấn đề của tôi: "Tuy nhiên, điều này có nghĩa là mọi yêu cầu sẽ mất 5 phút để hết thời gian chờ ..." Tôi chỉ cần giải pháp lập trình mà không cần bất kỳ sự can thiệp web.config nào. –
Theo tôi biết không có cách nào có lập trình để làm điều này do cách IIS là proxy cho DNX. Nếu bạn không chỉnh sửa giá trị đó thì yêu cầu sẽ luôn 502 sau 2 phút –
@MartinBeeby Thêm dòng này bây giờ khiến ứng dụng thất bại khi khởi động, có vẻ như không có nút '' ở đó theo mặc định ngay bây giờ –