سؤال

أنا أقدم طلبًا من UpdatePanel يستغرق أكثر من 90 ثانية. أحصل على خطأ في المهلة:

Microsoft JScript وقت التشغيل: Sys.webforms.pagerequestmanagertimeOutException: طلب الخادم توقيت.

هل يعرف أي شخص ما إذا كانت هناك طريقة لزيادة مقدار الوقت قبل أوقات الاتصال؟

هل كانت مفيدة؟

المحلول

يوجد خاصية على ScriptManager:

AsyncPostBackTimeout="300"

نصائح أخرى

في حالتي ، تم إنشاء كائن ScriptManager في ملف صفحة رئيسية تمت مشاركته بعد ذلك مع ملفات صفحة المحتوى. لذلك لتغيير خاصية scriptManager.AsyncPostBackTimeout في صفحة المحتوى ، اضطررت إلى الوصول إلى الكائن في ملف ASPX.CS الخاص بصفحة المحتوى:

protected void Page_Load(object sender, EventArgs e)
{
     . . . 
     ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
     _scriptMan.AsyncPostBackTimeout = 36000;
}

هذا فعل الحيلة (في الأساس فقط تجاهل جميع المهام):

<script type="text/javascript"> 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) { 
            if (args.get_error() && args.get_error().name === 'Sys.WebForms.PageRequestManagerTimeoutException') { 
                            args.set_errorHandled(true); 
            } 
        }); 
    </script> 

يرجى اتباع الخطوات التالية:

الخطوة 1: في web.config, ، تعيين httpRuntime maxRequestLength="1024000" executionTimeout="999999"

الخطوة 2: أضف الإعداد التالي إلى ScriptManager لصفحة الويب الخاصة بك: AsyncPostBackTimeout ="360000"

هذا سوف يحل مشكلتك.

قد يكون هذا قابلاً للتكوين عن طريق تغيير مهلة البرنامج النصي ASP في IIS.

إنه موجود في خصائص موقع الويب الخاص بك ، الدليل الظاهري ، زر التكوين ، ثم في علامة التبويب "الخيارات".

أو قم بتعيينه عن طريق إعداد خاصية Server.scriptTimeout.

حسنًا ، أفترض أن هذا سيعمل إذا كنت تريد فقط أن يتم طرح الطلب بإمكانية عدم تنفيذها بالكامل ...

أضف خاصية AsyncPostBackTimeout إلى علامة ScriptManager لتغيير مهلةك الافتراضية من 90 ثانية إلى شيء أكثر منطقية لتطبيقك.

علاوة على ذلك ، ابحث عن تغيير خدمة الويب التي تتلقى المكالمة للتحرك بشكل أسرع. 90 ثانية قد تكون كذلك في وقت الإنترنت.

المشكلة التي تواجهها هي عندما يتم تشغيل التطبيق الخاص بك إلى مهلة على استعلام قاعدة بيانات SQL. يستغرق الأمر وقتًا أطول من الإعداد الافتراضي لإرجاع الإخراج. لذلك تحتاج إلى زيادة خاصية ConnectionTimeout.

يمكنك القيام بذلك بعدة طرق:

  1. سلسلة الاتصال لها ملف ConnectionTimeout منشأه. إنها خاصية تحدد الحد الأقصى لعدد الثواني من الرمز الخاص بك سوف ينتظر فتح اتصال قاعدة البيانات. يمكنك تعيين مهلة الاتصال في قسم سلسلة الاتصال في web.config.

    <connectionstrings>
        <add name="ConnectionString" 
             connectionstring="Database=UKTST1;Server=BRESAWN;uid="      system.data.sqlclient="/><br mode=" hold=" /><br mode=" html="> <asp:ToolkitScriptManager runat=" server=" AsyncPostBackTimeOut=" 6000="><br mode=">
        </add>
    </connectionstrings>
    
  2. يمكنك وضع AsyncPostBackTimeout="6000" في .aspx صفحة

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
    </asp:ToolkitScriptManager>
    
  3. يمكنك تعيين مهلة في SqlCommand, ، حيث تتصل بالإجراء المخزن في ملف .CS.

    command.CommandTimeout = 30*1000;
    

أتمنى أن يكون لديك حل!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top