الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة توقف المشروع Asp.net بسبب خطأ ولا يعمل إلا بعد إعادة التشغيل

بدأه sscvbnm في 29 يوليو 2009 · 6 رد · 424 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

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

هل من حل؟ :blush:

وجزاكم الله خيراً

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#3

السلام عليكم:

بالتحديد يعود البرنامج للعمل في حال قمت بإيقاف السيرفس World Wide Web Publishing Service وإعادة تشغيلها.

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#4

جزاك الله خيراً

لكن اعذرني لا أعرف كيف أرى الEvent Log هذا وأين هو؟ فأنا مبتدئ جداً -_- :blush:

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#6

السلام عليكــم ورحمـة الله وبركاتــه ،،

جزاك الله خيراً

عرفت سبب الخطأ ولم أجد الحل بعد؛ والخطأ هو عند استدعائي لفنكشن ExecuteScalar ضمن تعليمات الSQL يظهر أحياناً هذا الخطأ:

There is already an open DataReader associated with this Command which must be closed first.

ثم بعد تكرار المشكلة مرات ربما يفصل الموقع بالكامل.

أنا أطلب هذا الرابط الذي فيه هذا الأمر 10 مرات في الصفحة فيظهر الخطأ في نتيجة أو اثنتين والباقي تكون تمام.

	Public Function ExecuteScalar(ByVal MyCommandText As String, Optional ByVal PrmParam() As SqlClient.SqlParameter = Nothing, Optional ByVal ReturnAsString As Boolean = True) As Object

		If LibIsOpeningNow = False Then Return Nothing
		If CheckConnected() = False Then Return Nothing

		Dim ResVal As New Object
		Try
			''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
			Dim ExecuteCom As New SqlClient.SqlCommand
			ExecuteCom.CommandTimeout = 0
			If Not PrmParam Is Nothing Then
				For i As Integer = 0 To PrmParam.Length - 1
					ExecuteCom.Parameters.Add(PrmParam(i))
				Next
			End If
			ExecuteCom.CommandText = MyCommandText
			ExecuteCom.Connection = MyConnection
			ResVal = ExecuteCom.ExecuteScalar()
			''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
			If ReturnAsString Then
				If ResVal Is Nothing Then Return ""
				Return ResVal.ToString
			Else
				Return ResVal
			End If
		Catch ex As Exception
			MyErrStr = ex.Message
			If ReturnAsString Then
				Return ""
			Else
				Return Nothing
			End If
		End Try
	End Function

هذا الكود الكامل للفنكشن والذي أريد فهمه مع تطبيقات ASP.NET كيف أتصل بالسيكول سيرفر هل باتصال وحيد عام أم باتصال عند كل أمر ثم أغلقه في آخر الأمر.

الآن أنا أستخدم الطريقة الأولى فالكونكشن عندي عام ضمن كلاس لكل أوامر المشروع؛ أما الSQL Command فكما ترى هو خاص بالفانكشن وغير مشترك ومع ذلك تظهر هذه المشكلة..

وللعلم أنا لا أستخدم في هذه الصفحة ولا في غيرها DataReader يعني ما عندي Datareader يعمل حتى يحدث التعارض لكن المشكلة عند كما ذكرت في فهمي لعملية الكونكشن هل أجعله عام أم خاص؟

والمشكلة أن فتحه وإغلاقه عند كل أمر يتطلب وقتاً طويلاً في SQL Server 2005 وهذا يبطأ الصفحات والنتائج.. بخلاف ذلك في MySQL فهو لا يأخذ مثل هذا الوقت.

قرأت ضمن الحلول أن علي استعمال MultipleActiveResultSets في كونكشن السيكول حتى يستطيع القراءة من 2 DataReader في كونكشن واحد.. لكني كنت سمعت من بعض أساتذتي أنه لا ينصح باستعماله لأنه يسبب مشاكل أحياناً ولم أستوضح أكثر منه؛ فما نصيحتكم؟

جزاكم الله خيراً

تم تعديل هذه المشاركة بواسطة sscvbnm في 29 يوليو 2009 في 19:08

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#7

السلام عليكم..

الحمد لله تم حل المشكلة عن طريق إضافة MultipleActiveResultSets=True إلى الكونكشن.

لو في ملاحظات أو نصيحة حول الموضوع أتحفونا بها جزاكم الله خيراً..

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…