سؤال

ولقد تم تحميلها ASP.NET لقائي الاول (كجزء من التعلم بلدي vb.net) وصلت الى فوضى فظيعة مع تجمع الاتصالات (تحدث أشياء مضحكة عندما يكون هناك أكثر من 1 مستخدم من موقع الويب الخاص بك) كل مرتبة الآن عن طريق استخدام أفضل للبيانات محاولة الصيد (وأيضا كانت الفكرة لتعلم) ولكن كنت أتساءل إذا كان هذا هو أفضل / طريقة النهائي، والآن إذا فشلت المحاولة، ثم لم يتم وضع الكثير من التفاصيل على الصفحة / تحديث ، لذلك إذا كنت تفعل بعض الأعمال قاعدة البيانات وفشل المحاولة، هل تحميل الصفحة ... إعادة توجيه في تقرير المصير والأمل أن تعمل في المرة القادمة ... أو مجرد إعلام المستخدم كان هناك خطأ ويجب المحاولة مرة أخرى؟

والشكر

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

المحلول

ويجب أن ديفينتيلي استخدام عبارات "using" لكافة الكائنات التي تنفذ IDisposable (مثل اتصالات والقراء). يحصل تترجم A 'باستخدام' بيان إلى محاولة-أخيرا منع تحت الأغطية، ويضمن أن تخلص () ويسمى حتى في حالة حدوث خطأ.

وهنا هو المثال التعليمات البرمجية المتكررة:

using (SqlConnection conn = new SqlConnection(this.connectionString))
{
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "LoadFromRepository";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ID", fileID);

        conn.Open();
        using (SqlDataReader rdr =
                   cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            while (rdr.Read())
            {
                // do something with read data
            }
        }
    }
}

نصائح أخرى

إذا حدث خطأ غير متوقع، إعادة توجيه المستخدم إلى صفحة خطأ لأنه ربما سيحدث في المرة القادمة أيضا.

هل بحثت في "استخدام" تصريحات للاتصالات DB والقراء؟

وأنا لن توجيه تلقائيا ونأمل أن تعمل في المرة القادمة (قد تحصل في حلقة لا نهائية).

وإعلام المستخدم واختياريا وصلة للمحاولة مرة أخرى.

وأنت حتى قد تحتاج لتحليل استثناء لمعرفة ما إذا محاولة أخرى سوف تساعد. بعض الاستثناءات هي حقا البق، وسوف محاولة أخرى لا تساعد.

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