मैं asp.net mvc एप्लिकेशन में एक नियंत्रक कार्रवाई के लिए अनुरोध टाइमआउट कैसे सेट करूं


94

मैं अपने आवेदन में एक विशिष्ट नियंत्रक कार्रवाई के लिए अनुरोध टाइमआउट बढ़ाना चाहता हूं। मुझे पता है कि मैं इसे पूरे आवेदन के लिए web.config में कर सकता हूं, लेकिन मैं इसे केवल एक कार्रवाई पर बदलूंगा।

Web.config उदाहरण:

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

मैं यह कैसे करुं?


जवाबों:


128

आप इस प्रोग्राम को कंट्रोलर में सेट कर सकते हैं: -

HttpContext.Current.Server.ScriptTimeout = 300;

डिफ़ॉल्ट 110 सेकंड (एक अजीब डिफ़ॉल्ट क्या है) के बजाय 5 मिनट का समय निर्धारित करता है?


30
AsyncController के आगमन के साथ यह याद रखने योग्य है कि अतुल्यकालिक अनुरोधों के लिए एक समान प्रभाव प्राप्त करने के लिए आपको [AsyncTimeout] संपत्ति का उपयोग करना चाहिए।
जेसन

6
इस उत्तर के साथ मेरा सवाल यह है कि यह वास्तव में केवल उस एक कार्रवाई को कैसे प्रभावित करेगा जिसमें इसे रखा गया था? इस अनुरोध के पूरा हो जाने के बाद क्या वह सेटिंग भविष्य के सभी अनुरोधों के लिए वापस आ जाएगी?
jhilden

10
@ ज़िल्डेन HttpContext का अनुरोध प्रति अनुरोध के आधार पर किया जाता है, इसलिए यह अगले अनुरोध पर डिफ़ॉल्ट मान पर वापस आ जाएगा
tobiak777

6
आप HttpContext.Current ('करंट' याद आ रही है) जोड़ना चाह सकते हैं
bboyle1234

5
मुझे मिलता है: "httpcontext में करंट के लिए परिभाषा नहीं है"। मैं .NET कोर 2.0 का उपयोग कर रहा हूं। इसे ठीक करने के लिए कोई भी विचार?
तेदेज

71
<location path="ControllerName/ActionName">
    <system.web>
        <httpRuntime executionTimeout="1000"/>
    </system.web>
</location>

संभवतः नियंत्रक के बजाय web.config में ऐसे मान सेट करना बेहतर है। विन्यास योग्य विकल्पों के हार्डकोडिंग को हानिकारक माना जाता है।


15
-1 विशेष परिस्थितियों के लिए हार्ड कोडिंग ठीक है जैसा कि ओपी ने वर्णित किया है। ऐसा लगता है कि एक विशिष्ट कार्रवाई को बाकी कार्यों की तुलना में एक अलग समय की आवश्यकता है ताकि कार्रवाई के अंदर एक अच्छा स्थान जैसा लगता है।
लेविटिकन

6
निष्पादन समय MVC के लिए काम नहीं करता है - यह गलत उत्तर है। यहाँ देखें: फ़ोरम .asp.net
p

3
कृपया ध्यान दें कि यदि डिबग मोड msdn.microsoft.com/en-us/library/vstudio/… निष्पादन टाइमआउट वैकल्पिक Int32 विशेषता पर है तो इसे अनदेखा कर दिया जाता है । ASP.NET द्वारा स्वचालित रूप से बंद करने से पहले एक अनुरोध को निष्पादित करने की अनुमति देने वाले सेकंड की अधिकतम संख्या निर्दिष्ट करता है। यह टाइम-आउट तभी लागू होता है जब संकलन तत्व में डीबग विशेषता गलत है। इसलिए, यदि डिबग विशेषता सही है, तो आपको डीबग करते समय एप्लिकेशन शटडाउन से बचने के लिए इस विशेषता को एक बड़े मूल्य पर सेट करने की आवश्यकता नहीं है।
निक वैन एश सेप

4
यह सबसे सही उत्तर नहीं है, क्योंकि इसमें अन्य सभी नियंत्रक क्रियाओं के लिए निष्पादन के समय को बदलने का दुष्प्रभाव है।
एरिक जे।

1
@EricJ। केवल नियंत्रक रूट (ओं) के भीतर से शुरू होता हैControllerName\ActionName
गोल्डबिशप

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.