IIS দীর্ঘ ASP.NET অপারেশনের সময়সীমা অনুরোধ করে


89

আমি যখন দীর্ঘ অপারেশন চালাচ্ছি তখন আমি আইআইএসের অনুরোধের সময়সীমা অনুভব করছি। দৃশ্যের পিছনে আমার এএসপি.এনইটি অ্যাপ্লিকেশন ডেটা প্রক্রিয়াকরণ করছে, তবে প্রক্রিয়াধীন রেকর্ডের সংখ্যাটি বড় এবং এইভাবে অপারেশনটি অনেক সময় নিচ্ছে।

যাইহোক, আমি মনে করি আইআইএস অধিবেশন সময় শেষ। আইআইএস বা এএসপি.এনইটি সেশনে এটি কি সমস্যা?

আগাম ধন্যবাদ

উত্তর:


147

আপনি যদি কোনও এএসপি.এনইটি স্ক্রিপ্ট কার্যকর করার জন্য অনুমোদিত সময়ের পরিমাণ বাড়িয়ে দিতে চান তবে Server.ScriptTimeoutমানটি বাড়ান । ডিফল্টটি .NET 1.x এর জন্য 90 সেকেন্ড এবং .NET 2.0 এর জন্য 110 সেকেন্ড এবং তার পরে।

উদাহরণ স্বরূপ:

// Increase script timeout for current page to five minutes
Server.ScriptTimeout = 300;

এই মানটি কনফিগারেশন উপাদানটিতে আপনার web.configফাইলে কনফিগারও করা যেতে পারে httpRuntime:

<!-- Increase script timeout to five minutes -->
<httpRuntime executionTimeout="300" 
  ... other configuration attributes ...
/>

এখানে চিত্র বর্ণনা লিখুন

এমএসডিএন ডকুমেন্টেশন অনুসারে নোট করুন :

"এই টাইম-আউট কেবল তখনই প্রযোজ্য যদি সংকলনের উপাদানটিতে ডিবাগ বৈশিষ্ট্যটি মিথ্যা হয় Therefore সুতরাং, ডিবাগ বৈশিষ্ট্যটি যদি সত্য হয়, আপনি ডিবাগ করার সময় অ্যাপ্লিকেশন শাটডাউন এড়াতে আপনাকে এই বৈশিষ্ট্যটিকে কোনও বড় মান হিসাবে সেট করতে হবে না। "

আপনি যদি ইতিমধ্যে এটি করে ফেলেছেন তবে আপনার সেশনটির মেয়াদ শেষ হচ্ছে তা সন্ধান করছেন তবে এএসপি.নেট HttpSessionState.Timeoutমান বাড়ান :

উদাহরণ স্বরূপ:

// Increase session timeout to thirty minutes
Session.Timeout = 30;

এই মানটি কনফিগারেশন উপাদানটিতে আপনার web.configফাইলে কনফিগারও করা যেতে পারে sessionState:

<configuration>
  <system.web>
    <sessionState 
      mode="InProc"
      cookieless="true"
      timeout="30" />
  </system.web>
</configuration>

যদি আপনার স্ক্রিপ্টটি কার্যকর করতে কয়েক মিনিট সময় নিচ্ছে এবং প্রচুর সহবর্তী ব্যবহারকারী রয়েছেন তবে পৃষ্ঠাটি একটি অ্যাসিঙ্ক্রোনাস পৃষ্ঠাতে পরিবর্তন বিবেচনা করুন । এটি আপনার আবেদনের স্কেলিবিলিটি বাড়িয়ে তুলবে।

অন্য বিকল্পটি যদি আপনার সার্ভারে প্রশাসকের অ্যাক্সেস থাকে তবে নির্ধারিত টাস্ক বা উইন্ডোজ পরিষেবা হিসাবে বাস্তবায়নের জন্য প্রার্থী হিসাবে এই দীর্ঘ চলমান অপারেশনটিকে বিবেচনা করা।


এফওয়াইআই এইচটিআইপিআরটাইম এক্সিকিউশনটাইমআউটটি সেকেন্ডে রয়েছে এবং কোনও বড় হাতের টি নেই
অ্যান্ড্রু রিমার

7
এই টাইমআউট মানটি ব্যবহারের জন্য ডিবাগ মোডটি মিথ্যাতে সেট করাও জরুরী: <system.web> <সংকলন ডিবাগ = "মিথ্যা" টার্গেটফ্রেমওয়ার্ক = "4.0" /> </ system.web>
জেসি রোপার

@ জেএসরোপার যদি আপনি আমাকে সেগুলিতে ডক্সে নির্দেশ করতে পারেন তবে আমি উত্তরে সেটিকে অন্তর্ভুক্ত করে খুশি হব, বা আপনি আমার উত্তরটি সরাসরি সম্পাদনা করতে পারবেন। টা।
কেভ

ডিফল্ট এক্সিকিউশনটাইমআউট মান 110 সেকেন্ড।
frattaro

21

কেভ কেভ!

যেহেতু আমি একটি ওয়েব ফর্ম অ্যাপ্লিকেশনটিতে কেবলমাত্র একটি প্রশাসক পৃষ্ঠায় দীর্ঘ প্রসেসিং করেছি আমি কোড বিকল্পটি ব্যবহার করেছি। তবে উত্পাদনের উপর অস্থায়ী দ্রুত সমাধানের অনুমতি দেওয়ার জন্য আমি <location>ওয়েবকনফিগের একটি ট্যাগে কনফিগার সংস্করণ ব্যবহার করেছি । এইভাবে আমার প্রশাসক / প্রসেসিং পৃষ্ঠাটি পর্যাপ্ত সময় পেয়েছিল, যখন শেষ ব্যবহারকারীদের জন্য পৃষ্ঠা এবং এ জাতীয় তাদের পুরানো সময়কে আচরণ থেকে বিরত রাখে।

নীচে আমি আপনার জন্য কনফিগারটি দিয়েছি গুগলদের একই দ্রুত ফিক্সের প্রয়োজন। আপনি অবশ্যই শুনব আমার '4 ঘন্টা' উদাহরণ ছাড়া অন্য মূল্যবোধ, কিন্তু ব্যবহার করা উচিত আপনি কি দয়া করে মনে রাখবেন অধিবেশন timeOut, মিনিটের মধ্যে অনুরোধটি executionTimeoutসেকেন্ডের মধ্যে নেই!

এবং - যেহেতু এটি ২০১৫ এরই মধ্যে - একটি নন-কুইকফিক্সের জন্য আপনার ব্যবহার করা উচিত et । নেট এর ২.০ এর ASYNC পৃষ্ঠার পরিবর্তে নেট সম্ভব ২.০ এর ASYNC পৃষ্ঠাটি পরিবর্তিত হয়ে অপেক্ষা করুন / যখন কেইভি ২০১০ সালে উত্তর দিয়েছে :)।

<configuration>
    ... 
    <compilation debug="false" ...>
    ... other stuff ..

    <location path="~/Admin/SomePage.aspx">
        <system.web>
            <sessionState timeout="240" />
            <httpRuntime executionTimeout="14400" />
        </system.web>
    </location>
    ...
</configuration>

আমি আমার ওয়েবকনফাইগে "অবস্থান" স্নিপেট অন্তর্ভুক্ত করেছি তবে এটি কাজ করছে না। আমি কেবল "এক্সিকিউশনটাইমআউট" ব্যবহার করছি, আমার "সেশনস্টেট" লাগবে না। আমাকে কি অন্য কিছু কনফিগার করতে হবে? আমি নেট 4.0 ব্যবহার করছি। যদি আমি সরাসরি "সিস্টেমে ডাব্লু.আরএনটাইম" ব্যবহার করি তবে এটি সমস্ত পৃষ্ঠায় সঠিকভাবে সময় নির্ধারণ করে।
অলিভার

12

আমি এখানে এটি পোস্ট করছি, কারণ আমি এর উপর 3 এবং 4 ঘন্টা ব্যয় করেছি, এবং আমি কেবল উপরের মতো উত্তর পেয়েছি, যেগুলি বলে যে executionTimeএটি যোগ করে , তবে এটি সমস্যার সমাধান করে না যে ক্ষেত্রে আপনি এএসপি। নেট কোর ব্যবহার করছেন । এটির জন্য, এটি কাজ করবে:

ওয়েবকনফিগ ফাইলে নোডে requestTimeoutঅ্যাট্রিবিউট যুক্ত করুন aspNetCore

<system.webServer>
  <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) />
</system.webServer>

এই উদাহরণে, আমি 10 মিনিটের জন্য মানটি সেট করছি।

তথ্যসূত্র: https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module


এটি কেবল OutOfProcessহোস্টিং মডেলের জন্য প্রযোজ্য । কারণ InProcessসময়সীমা নির্ধারণ করা নেই। আইআইএস প্রক্রিয়াটি সমাপ্ত হওয়ার জন্য এখানে অপেক্ষা করবে, রেফারেন্সটি এখানে: github.com/dotnet/AspNetCore.Docs/issues/16870
রোসদী কাশিম

-10

~অবস্থানটিতে অক্ষরটি সরান

path="~/Admin/SomePage.aspx"

হয়ে যায়

path="Admin/SomePage.aspx"

এটি প্রশ্নের উত্তর দেয় না
ইগোর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.