我已經遇到this thread了,但我可能需要其他的東西來處理我的情況。設置控制器動作超時
我有一個返回ViewResult
的作用,這是由客戶端的$.post()
的JavaScript調用:
var link = 'GetFoo?fooBar=' + fooBar;
var jqxhr = $.post(link, function (response) {
$('#myDiv').replaceWith(response);
});
控制器:
public ViewResult GetFoo(String fooBar)
{
if (Request.IsAjaxRequest())
{
// perform a ridiculously long task (~12 minutes)
// algorithm: 1) download files from the Azure blob storage
// 2) update each file
// 3) reupload to blob storage
// 4) return a list of URIs to be displayed to the UI
return View("MyFooView", data);
}
throw new InvalidOperationException();
}
正如評論暗示,內部運行有很長的任務e控制器。 (這是一個文檔生成模塊,它將PDF上傳到Azure blob存儲並將其鏈接返回到視圖。)
這在我的開發機器中工作正常,但是當它在Azure生產中生效時環境,它超時。我在各處都輸入了大量的日誌條目,事實證明,它能夠上載文檔並返回到控制器(即它到達上面的控制器返回語句)。但是,當模型數據返回到視圖時,客戶端腳本不會回叫(即div
內容不會被結果替換)。
有沒有辦法以某種方式延長呼叫的超時?在我的(不安全的)本地環境中複製是很困難的,所以最終的修復將會有所幫助。
如果我在GetFoo()
方法上使用屬性[AsyncTimeout(3600)]
,則此操作永遠不會從UI調用。
任何建議將不勝感激。
這很有趣。我會嘗試,如果'Server.ScriptTimeout'將無法正常工作。謝謝。 – 2011-06-01 01:34:33
你有這個ajax-polling-passing-id技術的例子嗎?我試圖弄清楚它在我的情況下會如何工作。 – 2011-06-02 08:48:37
好的,我添加了一個相當廣泛的例子。它不會按原樣運行,但它應該足以爲您提供一個起點。 – knightpfhor 2011-06-02 20:54:24