Jak zwiększyć limit czasu żądania w usługach IIS?

150

Jak zwiększyć limit czasu żądania w usługach IIS 7.0? To samo można zrobić na karcie aplikacji w ustawieniach konfiguracji ASP w usługach IIS 6.0. Nie mogę znaleźć sekcji konfiguracji asp.net w usługach IIS 7.0

Dotnet Rocks
źródło

Odpowiedzi:

182

Dodaj to do swojej Web Config

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

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

Opcjonalny atrybut TimeSpan.

Określa maksymalną liczbę sekund, przez które żądanie może zostać wykonane, zanim zostanie automatycznie zamknięte przez ASP.NET.

Ten limit czasu ma zastosowanie tylko wtedy, gdy atrybut debug w elemencie kompilacji ma wartość False. Aby zapobiec zamykaniu aplikacji podczas debugowania, nie ustawiaj tego limitu czasu na dużą wartość.

Wartość domyślna to „00:01:50” (110 sekund).

Jeff Doolittle
źródło
8
Czy można to ustawić za pomocą interfejsu GUI Menedżera usług IIS 7?
Triynko
13
Limit czasu jest określany w sekundach, wartość domyślna to 110 sekund. Uwaga: ten limit czasu ma zastosowanie tylko wtedy, gdy atrybut debug w elemencie <compilation> ma wartość false!
Jowen
1
@Jowen: Ty rządzisz! Wcześniej zmieniłem debugowanie na fałszywe dni temu i nie skojarzyłem go ze wszystkimi błędami przekroczenia limitu czasu, które otrzymywałem. Teraz wiem.
Doug S
Zauważ, że maksymalna wartość ExecutionTimeout to także maksymalna wartość TimeSpan (10675199.02: 48: 05.4775807), która jest ... więcej niż potrzebujesz
Antoine Pelletier
72

W Menedżerze IIS kliknij witrynę prawym przyciskiem myszy i przejdź do Zarządzaj witryną sieci Web -> Ustawienia zaawansowane . W opcji Limity połączeń powinieneś zobaczyć Limit czasu połączenia .

Greg Shackles
źródło
6
To to samo, co limit czasu żądania. Próbuję zmigrować dane z dokumentu xml i reuqest timeout. Więc jeśli zwiększę limit czasu połączenia, zostanie to rozwiązane.
Dotnet Rocks
12
Nie sądzę, żeby to było poprawne, jeśli włączone jest „HTTP Keep-Alive”, to dotyczy to tego ustawienia czasu, co oznacza, jak długo połączenie będzie utrzymywać się, nie sądzę, że jest to związane z „limitem czasu żądania” (jak długo iis czeka wykonanie strony) ..
wizualny
1
Myślę, że jest to właściwa odpowiedź w niektórych sytuacjach, takich jak przesyłanie dużego pliku. Czekając na przesłanie,
David Hammond
45

Aby zwiększyć limit czasu żądania, dodaj to do web.config

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

a dla określonej strony dodaj to

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

Wartość domyślna to 90 sekund dla .NET 1.x.

Domyślne 110 sekund dla .NET 2.0 i nowszych.

Rae Lee
źródło
3
Zdobywasz
Bardzo przydatne. Dzięki!
jim1427
29

W IIS> = 7, <webLimits>odcinek został zastąpiony ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidth, i MinFileBytesPerSecIIS 6 ustawień metabazy.

Przykładowa konfiguracja:

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

Dla odniesienia: więcej informacji dotyczących tych ustawień w usługach IIS można znaleźć tutaj . Nie udało mi się również dodać tej sekcji do pliku web.config za pośrednictwem „edytora konfiguracji” menedżera IIS, chociaż pojawił się po dodaniu i przeszukaniu konfiguracji.

AndrewPK
źródło
5
To zastępuje ConnectionTimeout, a nie httpRuntime executionTimeout.
user2864740
15

Poniżej przedstawiono kroki umożliwiające rozwiązanie problemu.

  1. Otwórz swoje usługi IIS
  2. Przejdź do opcji „ Witryny ”.
  3. Kliknij prawym przyciskiem myszy.
  4. Następnie otwórz właściwość „ Zarządzaj witryną internetową ”.
  5. Następnie kliknij „ Ustawienia zaawansowane ”.
  6. Rozwiń sekcję „ Limity połączeń ”, w tym miejscu możesz ustawić „ limit czasu połączenia

wprowadź opis obrazu tutaj

Anjan Kant
źródło
łącze, aby uzyskać więcej informacji: docs.microsoft.com/en-us/previous-versions/dotnet/ ...
JPatel
11

Wiem, że pytanie dotyczyło ASP, ale może ktoś uzna tę odpowiedź za pomocną.

Jeśli masz serwer za usługami IIS 7.5 (np. Tomcat). W moim przypadku mam farmę serwerów ze skonfigurowanym serwerem Tomcat. W takim przypadku możesz zmienić limit czasu za pomocą Menedżera IIS:

  • przejdź do Farmy serwerów -> {Nazwa serwera} -> Proxy
  • zmień wartość w time-out polu wprowadzania
  • kliknij Zastosuj (prawy górny róg)

lub możesz to zmienić w pliku cofig:

  • otwórz % WinDir% \ System32 \ Inetsrv \ Config \ applicationHost.config
  • dostosuj webFarm serwera konfigurację aby była podobna do poniższej

Przykład:

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

$ {Time} jest w hh: mm: ss Format (więc jeśli chcesz, aby ustawić go na 90 sekund, a następnie umieścić tam 00:01:30)

W przypadku Tomcata (i prawdopodobnie innych kontenerów serwletów) musisz pamiętać o zmianie limitu czasu w % TOMCAT_DIR% \ conf \ server.xml (po prostu wyszukaj atrybut connectionTimeout w znaczniku Connector i pamiętaj, że jest on określony w milisekundach )

Paweł Grześ
źródło
2
Pamiętaj, że powinieneś publikować tylko odpowiedzi, które są bezpośrednio związane z zadanym pytaniem. Ponieważ to pytanie dotyczy wyłącznie usług IIS, odpowiedź zawierająca informacje o Tomcat naprawdę nie ma znaczenia.
Andrew Barber
9
W tym przypadku myślę, że odpowiedź jest istotna, ponieważ przypadek użycia określony tutaj (użycie routingu żądań aplikacji IIS do kierowania do innego serwera) dotyczy usług IIS. To ustawienie można również skonfigurować w Menedżerze usług IIS. FWIW, ta odpowiedź pomogła mi rozwiązać problem, który limit czasu żądania powinienem zmienić. (Ponieważ istnieje wiele ustawień limitu czasu w Menedżerze usług IIS)
Jensen Ching
3

Użyj poniższego polecenia Power shell, aby zmienić limit czasu wykonania (limit czasu żądania)

Zwróć uwagę, że podałem to jako domyślną witrynę internetową, przed ich użyciem zmień witrynę, a następnie spróbuj z niej skorzystać.

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

Lub możesz użyć poniższego kodu C #, aby zrobić to samo

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();
        }
    }
}

Możesz też użyć JavaScript, aby to zrobić.

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();

Lub możesz użyć poleceń AppCmd.

appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
Suraj Dixit
źródło