2012-05-18 110 views
37

在我的應用程序中,一個查詢需要3分鐘才能執行。我發現默認ExecutionTimeout值是110秒。我試圖將其更改爲500(秒),但它沒有解決我的問題。某處我發現設置<compilation debug="false">允許配置ExecutionTimeout屬性。但是,即使這並沒有解決我的問題。如何爲長時間運行的查詢增加executionTimeout?

有誰知道我可以如何增加長時間運行的查詢的執行超時?

+0

請記住,如果您使用會話,則會阻止所有休息頁面。 – Aristos

+0

是不是適合你? –

回答

2

當查詢需要那麼長時間時,我會建議異步運行它,並在完成時使用回調函數。

我對ASP.NET沒有太多經驗,但也許您可以使用AJAX來實現這種異步行爲。

通常情況下,網頁應該在幾秒鐘內加載,而不是幾分鐘。不要讓你的用戶等待這麼久!

+1

executiontimeout適用於任何請求,同步或異步...所以AJAX請求會受到相同的時間限制 – 2016-09-29 04:47:55

18

您可以在web.config中設置executionTimeout以支持較長的執行時間。

executionTimeout指定在ASP.NET自動關閉請求之前允許執行的最大秒數。 MSDN

<httpRuntime executionTimeout = "300" /> 

本作的執行超時5分鐘

可選的Int32屬性。

指定在被ASP.NET自動關閉之前允許執行請求的最大秒數,該請求被執行到 。

僅當編譯 元素中的調試屬性爲False時,此超時才適用。因此,如果debug屬性爲True,那麼您不必將此屬性設置爲較大的值,以便在調試時避免 應用程序關閉。默認值爲110秒,Reference

+3

我們可以爲單個頁面設置此值 – MonsterMMORPG

+0

@MonsterMMORPG您可以使用此代碼:Page.Server.ScriptTimeout = 60 –

84

對於.NET框架1.0和1.1,執行超時爲90秒,否則爲110秒。

如果你需要改變你需要做的是在你的web.config defult設置下<httpRuntime>

<httpRuntime executionTimeout = "number(in seconds)"/> 

但要記住:

此超時只適用於在編譯調試屬性元素是假的。

在詳細介紹compilation Element

有看看這個文件有看在我的情況大概httpRuntime Element

+26

The關於超時值的提示只有在web.config文件的編譯元素中debug =「true」時才應用。 –

+15

@EdGraham你不是指「僅當debug = false時才應用超時值」嗎? huMpty duMpty在說: 只有當編譯元素中的調試屬性爲False時,此超時才適用。 – 7wp

+0

這一定是正確的 - 我很抱歉! –

1

,我需要我的WCF運行超過2小時。設置和根本沒有工作。 wcf的執行時間不超過20〜30分鐘。所以我改變了IIS管理器中應用程序池的空閒超時設置,然後它工作!在IIS管理器中,選擇您的應用程序池並右鍵單擊它並選擇高級設置,然後將空閒超時設置更改爲您需要的任何分鐘。所以,我認爲設置web.config和設置應用程序池都是需要的。

+0

這可能意味着您沒有正確設置它,或者在進行更改後沒有回收您的應用程序池。 – Zorgarath

7

RE。 「我們可以爲單個頁面設置這個值」 - MonsterMMORPG。

是的,您可以(&通常應該)使用位置標記包含上一個答案。

例如

... 
    <location path="YourWebpage.aspx"> 
    <system.web> 
     <httpRuntime executionTimeout="300" maxRequestLength="29296" /> 
    </system.web> 
    </location> 
</configuration> 

上面的代碼是從我自己的工作的web.config,這是我昨天測試結束時拍攝的 - 它爲我工作。

+0

我理解事情的方式,我可以添加一個小的web.config文件到我的特定頁面所在的文件夾,只有這個設置?我相信web.configs過載,所以本地頁面文件夾中的web.config覆蓋了根目錄下的web.config設置,並且只讓特定頁面更容忍? –

1

要設置超時在每個頁面級別,你可以使用這個簡單的代碼:

Page.Server.ScriptTimeout = 60; 

注:60表示40秒,超時只適用於在編譯元素中的調試屬性爲false 。