Bagaimana cara meningkatkan batas waktu permintaan di IIS?

150

Bagaimana cara meningkatkan batas waktu permintaan di IIS 7.0? Hal yang sama dilakukan di bawah tab aplikasi di settngs konfigurasi ASP di IIS 6.0. Saya tidak dapat menemukan bagian konfigurasi asp.net di IIS 7.0

Dotnet Rocks
sumber

Jawaban:

182

Tambahkan ini ke Konfigurasi Web Anda

<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>

https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.85).aspx

Atribut TimeSpan opsional.

Menentukan jumlah detik maksimum yang diizinkan untuk dijalankan oleh suatu permintaan sebelum secara otomatis ditutup oleh ASP.NET.

Batas waktu ini hanya berlaku jika atribut debug di elemen kompilasi adalah False. Untuk membantu mencegah mematikan aplikasi saat Anda sedang debug, jangan set time-out ini ke nilai yang besar.

Standarnya adalah "00:01:50" (110 detik).

Jeff Doolittle
sumber
8
Apakah ini dapat diatur dari GUI Manajer IIS 7?
Triynko
13
Batas waktu ditentukan dalam detik, standarnya adalah 110 detik. Catatan: Batas waktu ini hanya berlaku jika atribut debug di elemen <compilation> disetel ke false!
Jowen
1
@Jowen: Kamu rock! Saya sebelumnya telah mengubah debug ke hari salah lalu dan tidak mengaitkannya dengan semua kesalahan batas waktu yang saya terima. Sekarang saya tahu.
Doug S
Perhatikan bahwa nilai maksimum dari eksekusi Timeime juga merupakan nilai maksimum TimeSpan (10675199.02: 48: 05.4775807) yang ... lebih dari yang Anda butuhkan
Antoine Pelletier
72

Di IIS Manager, klik kanan pada situs dan pergi ke Kelola Situs Web -> Pengaturan Lanjut . Di bawah opsi Batas Koneksi , Anda akan melihat Batas Waktu Koneksi .

Greg Shackles
sumber
6
Apakah ini sama dengan batas waktu permintaan? Saya mencoba memigrasi data dari dokumen xml dan waktu habis yang paling lama. Jadi, jika saya menambah batas waktu koneksi, ini akan diselesaikan.
Dotnet Rocks
12
saya tidak berpikir ini benar, jika 'HTTP Keep-Alive' diaktifkan, maka pengaturan waktu ini berlaku untuk itu, yang berarti berapa lama koneksi akan tetap hidup, saya tidak berpikir ini terkait dengan 'timeout permintaan' (berapa lama saya menunggu untuk pelaksanaan halaman) ..
visual
1
Saya pikir ini adalah jawaban yang tepat dalam situasi tertentu, seperti mengunggah file besar. Sambil menunggu untuk mengunggah, the
David Hammond
45

Untuk Meningkatkan batas waktu permintaan, tambahkan ini ke web.config

<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>

dan untuk halaman tertentu tambahkan ini

<location path="somefile.aspx">
    <system.web>
        <httpRuntime executionTimeout="180"/>
    </system.web>
</location>

Standarnya adalah 90 detik untuk .NET 1.x.

Default 110 detik untuk .NET 2.0 dan yang lebih baru.

Rae Lee
sumber
3
Anda mendapatkan +1 dengan informasi tentang lokasi
Gonza Oviedo
Sangat berguna. Terima kasih!
jim1427
29

Dalam IIS> = 7, sebuah <webLimits>bagian telah diganti ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidth, dan MinFileBytesPerSecIIS 6 pengaturan metabase.

Konfigurasi Contoh:

<configuration>
   <system.applicationHost>
      <webLimits connectionTimeout="00:01:00"
         dynamicIdleThreshold="150"
         headerWaitTimeout="00:00:30"
         minBytesPerSecond="500"
      />
   </system.applicationHost>
</configuration>

Untuk referensi: informasi lebih lanjut mengenai pengaturan ini di IIS dapat ditemukan di sini . Juga, saya tidak dapat menambahkan bagian ini ke web.config melalui "editor konfigurasi" manajer IIS, meskipun itu muncul setelah saya menambahkannya dan mencari konfigurasi.

AndrewPK
sumber
5
Ini menggantikan ConnectionTimeout, bukan milik httpRuntime executionTimeout.
user2864740
15

Di bawah ini disediakan langkah-langkah untuk memperbaiki masalah Anda.

  1. Buka IIS Anda
  2. Buka opsi " Situs ".
  3. Klik kanan mouse.
  4. Kemudian buka properti " Kelola Situs Web ".
  5. Kemudian klik " Pengaturan Lanjut ".
  6. Luaskan bagian " Batas Koneksi ", di sini Anda dapat mengatur " batas waktu koneksi " Anda

masukkan deskripsi gambar di sini

Anjan Kant
sumber
tautan untuk informasi lebih lanjut: docs.microsoft.com/en-us/previous-versions/dotnet/…
JPatel
11

Saya tahu pertanyaannya adalah tentang ASP tetapi mungkin seseorang akan menemukan jawaban ini bermanfaat.

Jika Anda memiliki server di belakang IIS 7.5 (mis. Tomcat). Dalam kasus saya, saya memiliki server farm dengan server Tomcat yang dikonfigurasi. Jika demikian, Anda dapat mengubah batas waktu menggunakan Manajer IIS:

  • pergi ke Server Farms -> {Server Name} -> Proxy
  • ubah nilainya di kotak entri Time-out
  • klik Terapkan (sudut kanan atas)

atau Anda dapat mengubahnya di file cofig:

  • buka % WinDir% \ System32 \ Inetsrv \ Config \ applicationHost.config
  • sesuaikan konfigurasi server webFarm agar serupa dengan yang berikut ini

Contoh:

<webFarm name="${SERVER_NAME}" enabled="true"> 
  <server address="${SERVER_ADDRESS}" enabled="true">
    <applicationRequestRouting httpPort="${SERVER_PORT}" />
  </server>
  <applicationRequestRouting>
    <protocol timeout="${TIME}" />
  </applicationRequestRouting>
</webFarm>

The $ {WAKTU} adalah di HH: ss: mm Format (jadi jika Anda ingin mengaturnya untuk 90 detik kemudian diletakkan di sana 00:01:30)

Dalam hal Tomcat (dan mungkin wadah servlet lainnya) Anda harus ingat untuk mengubah batas waktu di % TOMCAT_DIR% \ conf \ server.xml (cukup cari atribut connectionTimeout di tag Connector , dan ingat bahwa itu ditentukan dalam milidetik )

Paweł Grześ
sumber
2
Harap dicatat bahwa Anda hanya boleh memposting jawaban yang terkait langsung dengan pertanyaan yang diajukan. Karena pertanyaan ini murni tentang IIS, jawaban dengan informasi tentang Tomcat benar-benar tidak relevan.
Andrew Barber
9
Dalam hal ini saya pikir jawabannya relevan karena use case yang ditentukan di sini (menggunakan IIS Application Request Routing untuk merutekan ke server lain) adalah tentang IIS. Pengaturan di sini juga dapat dikonfigurasi di dalam IIS Manager. FWIW, jawaban ini membantu saya memecahkan masalah batas waktu permintaan mana yang harus saya ubah. (Karena ada banyak pengaturan batas waktu di IIS Manager)
Jensen Ching
3

Gunakan perintah Power shell di bawah ini untuk mengubah batas waktu eksekusi (Request Timeout)

Harap dicatat bahwa saya telah memberikan ini untuk situs web standar, sebelum menggunakan ini silakan ubah situs dan kemudian coba gunakan ini.

 Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.web/httpRuntime" -name "executionTimeout" -value "00:01:40"

Atau, Anda dapat menggunakan kode C # di bawah ini untuk melakukan hal yang sama

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

    private static void Main() {

        using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetWebConfiguration("Default Web Site");

            ConfigurationSection httpRuntimeSection = config.GetSection("system.web/httpRuntime");
            httpRuntimeSection["executionTimeout"] = TimeSpan.Parse("00:01:40");

            serverManager.CommitChanges();
        }
    }
}

Atau, Anda dapat menggunakan JavaScript untuk melakukan ini.

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";

var httpRuntimeSection = adminManager.GetAdminSection("system.web/httpRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpRuntimeSection.Properties.Item("executionTimeout").Value = "00:01:40";

adminManager.CommitChanges();

Atau, Anda dapat menggunakan perintah AppCmd.

appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
Suraj Dixit
sumber