Làm cách nào để tăng thời gian chờ yêu cầu trong IIS?


150

Làm cách nào để tăng thời gian chờ yêu cầu trong IIS 7.0? Điều tương tự cũng được thực hiện trong tab ứng dụng trong cấu hình ASP giải quyết trong IIS 6.0. Tôi không thể tìm thấy phần cấu hình asp.net trong IIS 7.0

Câu trả lời:


182

Thêm phần này vào Cấu hình web của bạn

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

https://msdn.microsoft.com/en-us/l Library / e1f13641 (v = vs85) .aspx

Tùy chọn TimeSpan thuộc tính.

Chỉ định số giây tối đa mà yêu cầu được phép thực hiện trước khi tự động tắt bởi ASP.NET.

Thời gian chờ này chỉ áp dụng nếu thuộc tính gỡ lỗi trong phần tử biên dịch là Sai. Để giúp ngăn chặn ứng dụng tắt trong khi bạn gỡ lỗi, đừng đặt thời gian chờ này thành một giá trị lớn.

Mặc định là "00:01:50" (110 giây).


8
Điều này có thể được đặt từ GUI của Trình quản lý IIS 7 không?
Triynko

13
Thời gian chờ được chỉ định bằng giây, mặc định là 110 giây. Lưu ý: Thời gian chờ này chỉ áp dụng nếu thuộc tính gỡ lỗi trong phần tử <compilation> được đặt thành false!
Jowen

1
@Jowen: Bạn đá! Tôi trước đó đã thay đổi gỡ lỗi thành sai ngày trước và không liên kết nó với tất cả các lỗi hết thời gian tôi nhận được. Bây giờ tôi biết.
Doug S

Lưu ý rằng giá trị tối đa của execTimeout cũng là giá trị tối đa của TimeSpan (10675199.02: 48: 05.4775807) là ... nhiều hơn bạn cần
Antoine Pelletier

72

Trong IIS Manager, nhấp chuột phải vào trang web và đi đến Quản lý trang web -> Cài đặt nâng cao . Trong tùy chọn Giới hạn kết nối , bạn sẽ thấy Hết thời gian kết nối .


6
Đây có giống như thời gian chờ yêu cầu. Tôi đang cố gắng di chuyển dữ liệu từ một tài liệu xml và thời gian chờ reuqest. Vì vậy, nếu tôi tăng thời gian chờ kết nối thì điều này sẽ được giải quyết.
Dotnet Rocks

12
Tôi không nghĩ điều này là đúng, nếu 'HTTP Keep-Alive' được bật, thì cài đặt thời gian này áp dụng cho nó, nghĩa là kết nối sẽ duy trì được bao lâu, tôi không nghĩ điều này có liên quan đến 'thời gian chờ yêu cầu' (thời gian chờ đợi của tôi là bao lâu để thực hiện một trang) ..
trực quan

1
Tôi nghĩ rằng đây là câu trả lời đúng trong một số tình huống, chẳng hạn như tải lên một tệp lớn. Trong khi chờ đợi để tải lên,
David Hammond

45

Để tăng thời gian yêu cầu, hãy thêm nó vào web.config

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

và cho một trang cụ thể thêm điều này

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

Mặc định là 90 giây cho .NET 1.x.

110 giây mặc định cho .NET 2.0 trở lên.


3
Bạn đã kiếm được +1 với thông tin về địa điểm
Gonza Oviedo

Rất hữu ích. Cảm ơn!
jim1427

29

Trong IIS> = 7, một <webLimits>phần đã thay thế ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidth, vàMinFileBytesPerSec IIS 6 thiết lập metabase.

Cấu hình ví dụ:

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

Để tham khảo: thông tin thêm về các cài đặt này trong IIS có thể được tìm thấy ở đây . Ngoài ra, tôi không thể thêm phần này vào web.config thông qua "trình chỉnh sửa cấu hình" của trình quản lý IIS, mặc dù nó đã hiển thị khi tôi thêm nó và tìm kiếm cấu hình.


5
Điều này thay thế ConnectionTimeout, không phải của httpR.78 executionTimeout.
dùng2864740

15

Dưới đây được cung cấp các bước để khắc phục vấn đề của bạn.

  1. Mở IIS của bạn
  2. Đi đến tùy chọn " Trang web ".
  3. Nhấp chuột phải.
  4. Sau đó mở tài sản " Quản lý trang web ".
  5. Sau đó bấm vào " Cài đặt nâng cao ".
  6. Mở rộng phần " Giới hạn kết nối ", tại đây bạn có thể đặt " hết thời gian kết nối "

nhập mô tả hình ảnh ở đây



11

Tôi biết câu hỏi là về ASP nhưng có lẽ ai đó sẽ thấy câu trả lời này hữu ích.

Nếu bạn có một máy chủ đằng sau IIS 7.5 (ví dụ Tomcat). Trong trường hợp của tôi, tôi có một cụm máy chủ với máy chủ Tomcat được cấu hình. Trong trường hợp đó, bạn có thể thay đổi thời gian chờ bằng Trình quản lý IIS:

  • đi đến Máy chủ trang trại -> {Tên máy chủ} -> Proxy
  • thay đổi giá trị trong hộp nhập hết thời gian
  • nhấp vào Áp dụng (góc trên bên phải)

hoặc bạn có thể thay đổi nó trong tệp cofig:

  • mở % WinDir% \ System32 \ Inetsrv \ Config \ applicationhost.config
  • điều chỉnh cấu hình webFarm của máy chủ tương tự như sau

Thí dụ:

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

Các $ {} THỜI GIAN là trong HH: mm: ss định dạng (vì vậy nếu bạn muốn đặt nó là 90 giây sau đó đặt ở đó 00:01:30)

Trong trường hợp Tomcat (và có thể là các thùng chứa servlet khác), bạn phải nhớ thay đổi thời gian chờ trong % TOMCAT_DIR% \ conf \ server.xml (chỉ tìm kiếm thuộc tính ConnectionTimeout trong thẻ Trình kết nối và nhớ rằng nó được chỉ định theo mili giây )


2
Xin lưu ý rằng bạn chỉ nên đăng câu trả lời liên quan trực tiếp đến câu hỏi được hỏi. Vì câu hỏi này hoàn toàn là về IIS, nên một câu trả lời với thông tin về Tomcat thực sự không liên quan.
Andrew Barber

9
Trong trường hợp này, tôi nghĩ rằng câu trả lời có liên quan như trường hợp sử dụng được chỉ định ở đây (sử dụng Định tuyến yêu cầu ứng dụng IIS để định tuyến đến máy chủ khác) là về IIS. Cài đặt ở đây cũng có thể định cấu hình bên trong IIS Manager. FWIW, câu trả lời này đã giúp tôi khắc phục sự cố thời gian chờ yêu cầu mà tôi nên thay đổi. (Vì có rất nhiều cài đặt thời gian chờ trong Trình quản lý IIS)
Jensen Ching

3

Sử dụng lệnh Power shell bên dưới để thay đổi thời gian thực hiện (Hết thời gian yêu cầu)

Xin lưu ý rằng tôi đã đưa ra điều này cho trang web mặc định, trước khi sử dụng, vui lòng thay đổi trang web và sau đó thử sử dụng trang này.

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

Hoặc, Bạn có thể sử dụng mã C # dưới đây để làm điều tương tự

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

Hoặc, bạn có thể sử dụng JavaScript để làm điều này.

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

Hoặc, bạn có thể sử dụng các lệnh AppCmd.

appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.