วิธีเพิ่มคำขอหมดเวลาใน IIS


150

วิธีเพิ่มคำขอหมดเวลาใน IIS 7.0 ทำเช่นเดียวกันภายใต้แท็บแอปพลิเคชันในการกำหนดค่า ASP ใน IIS 6.0 ฉันไม่พบส่วนกำหนดค่า asp.net ใน IIS 7.0

คำตอบ:


182

เพิ่มสิ่งนี้ลงใน Web Config ของคุณ

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

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

แอตทริบิวต์ TimeSpan เพิ่มเติม

ระบุจำนวนวินาทีสูงสุดที่คำขออนุญาตให้ดำเนินการก่อนที่จะถูกปิดโดยอัตโนมัติโดย ASP.NET

การหมดเวลานี้ใช้เฉพาะเมื่อแอตทริบิวต์ debug ในองค์ประกอบการรวบรวมเป็น False เพื่อช่วยป้องกันการปิดแอปพลิเคชันในขณะที่คุณกำลังดีบั๊กอย่าตั้งค่าการหมดเวลาเป็นค่าขนาดใหญ่

ค่าเริ่มต้นคือ "00:01:50" (110 วินาที)


8
สามารถตั้งค่านี้จาก IIS 7 Manager GUI ได้หรือไม่
Triynko

13
การหมดเวลาถูกระบุในหน่วยวินาทีค่าเริ่มต้นคือ 110 วินาที หมายเหตุ: การหมดเวลานี้จะมีผลต่อเมื่อแอตทริบิวต์ debug ในองค์ประกอบ <compilation> ถูกตั้งค่าเป็น false!
โจเว่น

1
@Jowen: คุณตื่นเต้น! ก่อนหน้านี้ฉันได้แก้ไขการดีบักเป็นเท็จวันที่ผ่านมาและไม่ได้เชื่อมโยงกับข้อผิดพลาดการหมดเวลาทั้งหมดที่ฉันได้รับ ตอนนี้ฉันรู้.
Doug S

โปรดทราบว่าค่าสูงสุดของ executionTimeout ก็เป็นค่าสูงสุดของ TimeSpan (10675199.02: 48: 05.4775807) ซึ่ง ... มากกว่าที่คุณต้องการ
Antoine Pelletier

72

ใน IIS Manager คลิกขวาบนเว็บไซต์และไปจัดการเว็บ เว็บไซต์ -> ตั้งค่าขั้นสูง ภายใต้ตัวเลือกขีด จำกัด การเชื่อมต่อคุณควรเห็นการหมดเวลาเชื่อมต่อ


6
เหมือนกับคำขอหมดเวลา ฉันกำลังพยายามย้ายข้อมูลจากเอกสาร xml และหมดเวลา reuqest ดังนั้นหากฉันเพิ่มการหมดเวลาเชื่อมต่อสิ่งนี้จะได้รับการแก้ไข
Dotnet Rocks

12
ฉันไม่คิดว่ามันถูกต้องหากเปิดใช้งาน 'HTTP Keep-Alive' การตั้งค่าเวลานี้จะมีผลกับความหมายของการเชื่อมต่อที่จะมีชีวิตอยู่นานแค่ไหนฉันไม่คิดว่ามันเกี่ยวข้องกับ 'คำขอหมดเวลา' สำหรับการประมวลผลหน้า) ..
visual

1
ฉันคิดว่านี่เป็นคำตอบที่ถูกต้องในบางสถานการณ์เช่นการอัปโหลดไฟล์ขนาดใหญ่ ในขณะที่รอการอัปโหลด
David Hammond

45

หากต้องการเพิ่มการหมดเวลาคำขอให้เพิ่มไปที่ web.config

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

และสำหรับหน้าใดหน้าหนึ่งให้เพิ่มสิ่งนี้

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

ค่าเริ่มต้นคือ 90 วินาทีสำหรับ. NET 1.x

ค่าเริ่มต้น 110 วินาทีสำหรับ. NET 2.0 และใหม่กว่า


3
คุณได้รับ +1 พร้อมข้อมูลเกี่ยวกับสถานที่
Gonza Oviedo

มีประโยชน์มาก. ขอบคุณ!
jim1427

29

ใน IIS> = 7 เป็น<webLimits>ส่วนได้เข้ามาแทนที่ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidthและMinFileBytesPerSecIIS 6 การตั้งค่า metabase

ตัวอย่างการกำหนดค่า:

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

สำหรับการอ้างอิง: ข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าเหล่านี้ใน IIS สามารถพบได้ที่นี่ นอกจากนี้ฉันไม่สามารถเพิ่มส่วนนี้ใน web.config ผ่าน "ตัวแก้ไขการกำหนดค่า" ของ IIS manager แม้ว่ามันจะปรากฏขึ้นเมื่อฉันเพิ่มและค้นหาการกำหนดค่า


5
แทนที่นี้ConnectionTimeoutไม่ executionTimeouthttpRuntime
user2864740

15

ด้านล่างนี้เป็นขั้นตอนในการแก้ไขปัญหาของคุณ

  1. เปิด IIS ของคุณ
  2. ไปที่ตัวเลือก " เว็บไซต์ "
  3. คลิกเมาส์ขวา
  4. จากนั้นเปิดคุณสมบัติ " จัดการเว็บไซต์ "
  5. จากนั้นคลิกที่ " การตั้งค่าขั้นสูง "
  6. ขยายส่วน " ข้อ จำกัด การเชื่อมต่อ " ที่นี่คุณสามารถตั้งค่า " การเชื่อมต่อหมดเวลา " ของคุณ

ป้อนคำอธิบายรูปภาพที่นี่


ลิงก์สำหรับข้อมูลเพิ่มเติม: docs.microsoft.com/en-us/previous-versions/dotnet/ …
JPatel

11

ฉันรู้ว่าคำถามเกี่ยวกับ ASP แต่บางคนอาจพบว่าคำตอบนี้มีประโยชน์

หากคุณมีเซิร์ฟเวอร์ที่อยู่ด้านหลัง IIS 7.5 (เช่น Tomcat) ในกรณีของฉันฉันมีเซิร์ฟเวอร์ฟาร์มที่ตั้งค่าเซิร์ฟเวอร์ Tomcat ในกรณีเช่นนี้คุณสามารถเปลี่ยนการหมดเวลาได้โดยใช้ IIS Manager:

  • ไปที่Server Farms -> {Server Name} -> Proxy
  • เปลี่ยนค่าในกล่องรายการหมดเวลา
  • คลิกใช้ (มุมบนขวา)

หรือคุณสามารถเปลี่ยนมันในไฟล์ cofig:

  • เปิด% WinDir% \ System32 \ Inetsrv \ Config \ applicationHost.config
  • ปรับการกำหนดค่าเซิร์ฟเวอร์webFarmให้คล้ายกับต่อไปนี้

ตัวอย่าง:

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

$ {} เวลาอยู่ในHH: ss: mmรูปแบบ (ดังนั้นหากคุณต้องการที่จะตั้งค่าให้ 90 วินาทีจากนั้นใส่มี 00:01:30)

ในกรณีของ Tomcat (และคอนเทนเนอร์ servlet อื่น ๆ ) คุณต้องจำไว้ว่าให้เปลี่ยนการหมดเวลาใน% TOMCAT_DIR% \ conf \ server.xml (เพียงค้นหาแอตทริบิวต์connectionTimeoutในแท็กตัวเชื่อมต่อและจำไว้ว่ามันถูกระบุเป็นมิลลิวินาที )


2
โปรดทราบว่าคุณควรโพสต์คำตอบที่เกี่ยวข้องกับคำถามที่ถามโดยตรงเท่านั้น เนื่องจากคำถามนี้เกี่ยวกับ IIS อย่างแท้จริงคำตอบที่มีข้อมูลเกี่ยวกับ Tomcat จริงๆแล้วไม่เกี่ยวข้องกัน
Andrew Barber

9
ในกรณีนี้ฉันคิดว่าคำตอบนั้นเกี่ยวข้องกับกรณีการใช้งานที่ระบุในที่นี้ (โดยใช้ IIS Application Request Routing เพื่อกำหนดเส้นทางไปยังเซิร์ฟเวอร์อื่น) นั้นเกี่ยวกับ IIS การตั้งค่าที่นี่สามารถกำหนดค่าภายใน IIS Manager ได้เช่นกัน FWIW คำตอบนี้ช่วยฉันแก้ไขปัญหาการหมดเวลาของคำขอที่ฉันควรเปลี่ยน (เนื่องจากมีการตั้งค่าการหมดเวลาจำนวนมากในตัวจัดการ IIS)
Jensen Ching

3

ใช้คำสั่ง Power shell ด้านล่างเพื่อเปลี่ยนการหมดเวลาการดำเนินการ (Request Timeout)

โปรดทราบว่าฉันได้ให้สิ่งนี้สำหรับเว็บไซต์เริ่มต้นก่อนที่จะใช้สิ่งเหล่านี้โปรดเปลี่ยนเว็บไซต์แล้วลองใช้สิ่งนี้

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

หรือคุณสามารถใช้รหัส C # ด้านล่างเพื่อทำสิ่งเดียวกัน

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

หรือคุณสามารถใช้ JavaScript เพื่อทำสิ่งนี้

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

หรือคุณสามารถใช้คำสั่ง AppCmd

appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.