2017-07-06 126 views
0

我有一個C#MVC應用程序。我知道的其中一個電話需要12小時,我正在生成一些報告。C#MVC IIS長時間運行請求

我想知道IIS是否會讓這個過程長時間運行。 如果我會這樣做,異步它會運行,並以某種方式把它放棄,讓他跑這麼久?

+0

看看Hangfire(https://www.hangfire.io)。這正是你想要的。 – Alex

回答

2

一般來說,這是一個非常糟糕的做法。您的應用程序池可能由於許多您無法控制的原因而被回收。 在外部過程中處理此問題,然後通過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將嘗試完成此項工作。

+0

只要應用程序池運行,它會運行? – Radu

+0

是的。但你需要明白,如果用戶篡改該按鈕,那麼你可能會非常快速地100%CPU使用率 – zaitsman

1

我假設報告必須使用類似SSRS的內容。爲什麼不在後端創建批處理作業以在指定的時間運行報告。用報告的狀態更新表格,只是在前端輪詢狀態。準備就緒後下載它。想象一下,如果您的報告已經運行了6個小時,並且它依賴於網站正在運行。如果有人重新啓動了6個小時處理過的網站,

+0

yep這是我的第二個雖然。我想我會與此一起去。 – Radu

相關問題