Jika Anda ingin memperpanjang jumlah waktu yang diizinkan untuk skrip ASP.NET untuk mengeksekusi, tingkatkan Server.ScriptTimeout
nilainya. Standarnya adalah 90 detik untuk .NET 1.x dan 110 detik untuk .NET 2.0 dan yang lebih baru.
Sebagai contoh:
Server.ScriptTimeout = 300;
Nilai ini juga dapat dikonfigurasi di web.config
file Anda di httpRuntime
elemen konfigurasi:
<httpRuntime executionTimeout="300"
... other configuration attributes ...
/>
Harap diperhatikan menurut dokumentasi MSDN :
"Batas waktu ini hanya berlaku jika atribut debug dalam elemen kompilasi adalah False. Oleh karena itu, jika atribut debug adalah True, Anda tidak perlu menyetel atribut ini ke nilai yang besar untuk menghindari penghentian aplikasi saat Anda men-debug. "
Jika Anda sudah melakukan ini tetapi menemukan bahwa sesi Anda kedaluwarsa kemudian tingkatkan nilai ASP.NET HttpSessionState.Timeout
:
Sebagai contoh:
Session.Timeout = 30;
Nilai ini juga dapat dikonfigurasi di web.config
file Anda di sessionState
elemen konfigurasi:
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
timeout="30" />
</system.web>
</configuration>
Jika skrip Anda membutuhkan waktu beberapa menit untuk dieksekusi dan ada banyak pengguna yang bersamaan, pertimbangkan untuk mengubah halaman menjadi Halaman Asinkron . Ini akan meningkatkan skalabilitas aplikasi Anda.
Alternatif lain, jika Anda memiliki akses administrator ke server, adalah mempertimbangkan operasi yang berjalan lama ini sebagai kandidat untuk diterapkan sebagai tugas terjadwal atau layanan windows.
Jawaban hebat dan lengkap, @Kev!
Karena saya melakukan pemrosesan lama hanya di satu halaman admin di aplikasi WebForms, saya menggunakan opsi kode. Tetapi untuk memungkinkan perbaikan cepat sementara pada produksi, saya menggunakan versi konfigurasi di
<location>
tag di web.config. Dengan cara ini admin / halaman pemrosesan saya mendapat cukup waktu, sementara halaman untuk pengguna akhir dan semacamnya mempertahankan perilaku waktu habis mereka.Di bawah ini saya memberikan konfigurasi untuk Anda, para Googler, yang membutuhkan perbaikan cepat yang sama. Tentu Anda harus menggunakan nilai lain selain contoh '4 jam' saya, tetapi JANGAN diperhatikan bahwa sesi
timeOut
dalam hitungan menit, sedangkan permintaanexecutionTimeout
dalam hitungan detik!Dan - karena ini sudah 2015 - untuk perbaikan cepat NON Anda harus menggunakan .Net 4.5's async / await sekarang jika memungkinkan, alih-alih halaman ASYNC .NET 2.0 yang canggih ketika KEV menjawab pada tahun 2010 :).
<configuration> ... <compilation debug="false" ...> ... other stuff .. <location path="~/Admin/SomePage.aspx"> <system.web> <sessionState timeout="240" /> <httpRuntime executionTimeout="14400" /> </system.web> </location> ... </configuration>
sumber
Saya memposting ini di sini, karena saya telah menghabiskan waktu 3 dan 4 jam untuk itu, dan saya hanya menemukan jawaban seperti yang di atas, yang mengatakan tambahkan
executionTime
, tetapi itu tidak menyelesaikan masalah dalam kasus itu Anda menggunakan ASP .NET Core . Untuk itu, ini akan berhasil:Pada file web.config tambahkan
requestTimeout
atribut padaaspNetCore
node.<system.webServer> <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) /> </system.webServer>
Dalam contoh ini, saya menetapkan nilai selama 10 menit.
Referensi: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module
sumber
OutOfProcess
model hosting. KarenaInProcess
tidak ada pengaturan batas waktu. IIS akan terus menunggu prosesnya selesai, lihat referensi di sini: github.com/dotnet/AspNetCore.Docs/issues/16870Hapus
~
karakter di lokasi jadipath="~/Admin/SomePage.aspx"
menjadi
path="Admin/SomePage.aspx"
sumber