PDA

View Full Version : سوال: خطا هنگام ثبت اطلاعات در بعضی مواقع و قطع ارتباط نرم افزار با سرور



hastiam
سه شنبه 22 اردیبهشت 1394, 16:57 عصر
سلام دوستان
من تو یکی از برنامه هام از EntityFrawork استفاده کردم. وقتی تعداد کاربرانی که ثبت اطلاعات انجام میدهند زیاد بشه و یا فرم هایی که با یک کلیک قراره بیش از 200 رکورد همزمان ثبت و یا حذف شود نرم افزار هنگ می کنه و خطای زیر رو نشان میده و در نهایت باعث قطع نرم افزار با سرور میشه که با ریست کردن webconfig ، مشکل حل میشه.

Execution of the command requires an open and available connection. The connection's current state is broken

من هرچی تو اینترنت سرچ کردم گفتند connection یه جا بسته نشده.تو EntityFrawork نباید چنین مشکلی وجود داشته باشه چون مثل ADO.Net نیست که Close کنیم یا اینکه واقعا هست و من نمیدونم باید چیکار کنم؟!!!
دوستان اگه امکانش هست راهنماییم کنید که چه مشکلی وجود داره؟

hastiam
یک شنبه 27 اردیبهشت 1394, 09:29 صبح
از دوستان برنامه نویس تا حالا کسی به این مشکل بر نخورده؟:متعجب:

SabaSabouhi
یک شنبه 27 اردیبهشت 1394, 13:40 عصر
سلام دوستان
من تو یکی از برنامه هام از EntityFrawork استفاده کردم. وقتی تعداد کاربرانی که ثبت اطلاعات انجام میدهند زیاد بشه و یا فرم هایی که با یک کلیک قراره بیش از 200 رکورد همزمان ثبت و یا حذف شود نرم افزار هنگ می کنه و خطای زیر رو نشان میده و در نهایت باعث قطع نرم افزار با سرور میشه که با ریست کردن webconfig ، مشکل حل میشه.

Execution of the command requires an open and available connection. The connection's current state is broken

من هرچی تو اینترنت سرچ کردم گفتند connection یه جا بسته نشده.تو EntityFrawork نباید چنین مشکلی وجود داشته باشه چون مثل ADO.Net نیست که Close کنیم یا اینکه واقعا هست و من نمیدونم باید چیکار کنم؟!!!
دوستان اگه امکانش هست راهنماییم کنید که چه مشکلی وجود داره؟

سلام
دوست عزیز، من متوجه مشکل نشدم، اما چیزهایی که می‌دونم رو می‌گم شاید کمکی کنه.
EF از Closed Connection استفاده می‌کنه. یعنی Connection رو فقط وقتی نیاز داره باز می‌کنه و بعد از
استفاده بلافاصله می‌بنده.
یه Connection وضعیت‌های متنوعی داره، اگه Close باشه توسط EF باز می‌شه و دوباره بسته می‌شه
اما اگه به هر دلیلی ( مثلاً قطع و وصل کابل شبکه ) این Connection خطا بده، به وضعیت Broken می‌ره
و معمولاً وقتی به این وضعیت می‌ره، EF دیگه نمی‌تونه باهاش کار کنه.

توی ObjectContext یه Property به نام Connection داریم. باز کردن و بستن Connection رو هنگامی که
این مشکل پیش میاد امتحان کن.

using ( var entities = New DbContext() ){
... // متوجه شدی که مشکل گفته شده پیش اومده
entities.Connection.Open();
entities.Connection.Close();
}

این رو امتحان کن، ممکنه مشکلت رو حل کنه. اگه مشکل حل شد، اینجا بنویس، شاید به درد بقیه هم بخوره.


صبا صبوحی

hastiam
یک شنبه 27 اردیبهشت 1394, 16:08 عصر
ممنون از راهنماییتون، این راه رو هم امتحان می کنم هر نتیجه ای گرفتم اینجا می نویسم.