[英]How to process long running requests with an HTTP handler under IIS?
[英]C# MVC IIS long running requests
我有一個C#MVC應用程序。 我知道其中一個電話大約需要12個小時,我正在生成一些報告。
我想知道IIS是否會使進程運行這么長時間。 如果我將其異步運行,它將運行並以某種方式收起並讓他運行這么長時間?
通常,這是非常差的做法。 您的應用程序池可能出於許多無法控制的原因而被回收。 您將受益於在外部過程中進行處理,然后通過IIS向用戶提供結果。
但是,從.net 4.5.2( https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/ )開始,您可以使用HostingEnvironment.QueueBackgroundWorkItem
API。 其背后的想法是,在正常關閉應用程序池的情況下,IIS將嘗試完成此工作。
我假設報告必須使用類似SSRS的內容。 為什么不在后端創建批處理作業以在指定的時間運行報告。 使用報告的狀態更新表,然后僅在前端輪詢狀態。 准備就緒時,只需下載即可。 想象一下,如果您的報告已經運行了6個小時,並且依賴於網站正常運行。 如果有人重新啟動網站,則需要6個小時的處理時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.