PDA

View Full Version : سوال: خطای application has stoped هنگام اجرای فایل exe پروژه سی شارپ در سیستم مقصد



majed_gh1992
چهارشنبه 09 دی 1394, 23:34 عصر
به پروژه به زبان سی شارپ با vs 2012 و sql 2012 نوشتم الان در ماشین مقصد (مثلا ماشین مجازی ویندوز سون 32 بیتی ) فایل exe را اجرا می کنم و وارد فرم وارد کردن یوز و پسور می شوم زمانی که یوز و پس را وارد می کنم و روی دکمه ورود کلیک می کنم خطای application has stoped را نمایش داده میشه .
دات نت 4.5 هم نصب است و sql expres (لطفا کمک کنید چند روزه هر چی سرچ زدم چیزی نفهمید:گریه::گریه::گریه::گری :)

کانکشن استرینگ هم به صورت زیر است



Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\shahrdari.mdf;Integrated Security=True;Connect Timeout=0;User Instance=True;Initial Catalog=shahrdari


قسمت event id های ویندوز رو هم نگاه کردم این خطا ثبت شده بود


log Name: Application
surce: .NET Runtime
event ID:1026
Application: shahrdari.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Data.SqlClient.SqlException

Stack:
at System.Data.ProviderBase.DbConnectionClosed.TryOpe nConnection(System.Data.Common.DbConnection, System.Data.ProviderBase.DbConnectionFactory, System.Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(System .Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.Linq.SqlClient.SqlConnectionManager.Us eConnection(System.Data.Linq.SqlClient.IConnection User)
at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe ()
at System.Data.Linq.SqlClient.SqlProvider.InitializeP roviderMode()
at System.Data.Linq.SqlClient.SqlProvider.System.Data .Linq.Provider.IProvider.Execute(System.Linq.Expre ssions.Expression)
at System.Data.Linq.DataQuery`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].System.Linq.IQueryProvider.Execute[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.Expressions.Expression)
at System.Linq.Queryable.Count[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.IQueryable`1<System.__Canon>)
at shahrdari.win_login.btnEnter_Click(System.Object, System.Windows.RoutedEventArgs)
at System.Windows.RoutedEventHandlerInfo.InvokeHandle r(System.Object, System.Windows.RoutedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Syste m.Object, System.Windows.RoutedEventArgs, Boolean)
at System.Windows.UIElement.RaiseEventImpl(System.Win dows.DependencyObject, System.Windows.RoutedEventArgs)
at System.Windows.UIElement.RaiseEvent(System.Windows .RoutedEventArgs)
at System.Windows.Controls.Primitives.ButtonBase.OnCl ick()
at System.Windows.Controls.Button.OnClick()
.....................

محمد رضا فاتحی
پنج شنبه 10 دی 1394, 07:30 صبح
سلام...
یه پیشنهاد...
تو رویداد کلیک دکمه لاگین از try-catch استفاده کن و اینو بنویس

try
{
//دستورات مورد نظر
}
catch (Exception ex)
{
StackTrace st = new StackTrace(ex, true);
StackFrame frame = st.GetFrame(0);
string fileName = frame.GetFileName();
string methodName = frame.GetMethod().Name;
int line = frame.GetFileLineNumber();
MessageBox.Show("fileName "+fileName +"\n"+"methodName "+methodName +"\n"+"line "+line);
}


اینطوری می فهمی کجا تو کدوم فایل و متد و کدوم خط خطا داده....اون خط رو بررسی کن یا تو همینجا ارسال کن...شاید بشه راهی پیدا کرد...

majed_gh1992
پنج شنبه 10 دی 1394, 08:43 صبح
سلام...
یه پیشنهاد...
تو رویداد کلیک دکمه لاگین از try-catch استفاده کن و اینو بنویس

try
{
//دستورات مورد نظر
}
catch (Exception ex)
{
StackTrace st = new StackTrace(ex, true);
StackFrame frame = st.GetFrame(0);
string fileName = frame.GetFileName();
string methodName = frame.GetMethod().Name;
int line = frame.GetFileLineNumber();
MessageBox.Show("fileName "+fileName +"\n"+"methodName "+methodName +"\n"+"line "+line);
}


اینطوری می فهمی کجا تو کدوم فایل و متد و کدوم خط خطا داده....اون خط رو بررسی کن یا تو همینجا ارسال کن...شاید بشه راهی پیدا کرد...

سلام عزیز
انجام دادم چیز خاصی نشون نداد این عکسش:ناراحت::ناراحت::ناراحت: :ناراحت::ناراحت:


138055

fakhradin
پنج شنبه 10 دی 1394, 12:02 عصر
با سلام و خسته نباشید
پیغامی که داده رو اگه نگاه کنید مربوط می شه به کانکشنتون به پایگاه داده که می تونه شامل این سه مشکل باشه
1. پایگاه داده اتون موجود نیست
2. پایگاه داده موجوده اما امکان دسترسی بهش وجود نداره
3. پایگاه داده موجوده و امکان دسترسی وجود داره ولی خط فرمانتون برای ارتباط با بانک اشتباهه
برای اولی چک کنید که پایگاه دادتون توی مسیر نصب برنامه اتون موجوده یا نه
دومی هم باید دسترسی حالا رو چک کنید
سومی هم باید کدهای برنامه اتون رو چک کنید

zayens
پنج شنبه 10 دی 1394, 12:11 عصر
ورژن دی ال الی که استفاده میکنی همخونی نداره
توی برنامه ویژوال استادیو توی سولوشن اکسپلورر و توی refrence ها همه ی dll ها را peroperties بگیر و بعدش گزینه ی copy local را true کن
بعدش پروژه را Clean و بعد Rebuild کن
همه dll هاییکه ساخته میشه و توی پوشه bin قرار داره رو کنار exe نصب شده در مقصد کپی کن

majed_gh1992
پنج شنبه 10 دی 1394, 13:21 عصر
ورژن دی ال الی که استفاده میکنی همخونی نداره
توی برنامه ویژوال استادیو توی سولوشن اکسپلورر و توی refrence ها همه ی dll ها را peroperties بگیر و بعدش گزینه ی copy local را true کن
بعدش پروژه را Clean و بعد Rebuild کن
همه dll هاییکه ساخته میشه و توی پوشه bin قرار داره رو کنار exe نصب شده در مقصد کپی کن

سلام
کاری که گفتین رو انجام دادم متاسفانه درست نشد
یه سوال توی sql expres که در ماشین مجازی نصبه چه طور بدونم که دیتابیسم اتچ شده یا نه؟(بدون استفاده از sql sarver mangment)
شاید ایراد از اتچ نشدن دیتابیس باشه آخه بعضی وقت ها event ها رو نگاه می کنم ارور cannot attached dabase name رو نمایش میده
نمیدونم ایراد از چیه کانکشن استرینگ هم درسته روی سیستم اصلی با اینکه دیتابیس رو دیتچ کردم با همین کانکشن اتچ میشه و مشکلی ندارد

majed_gh1992
پنج شنبه 10 دی 1394, 13:29 عصر
با سلام و خسته نباشید
پیغامی که داده رو اگه نگاه کنید مربوط می شه به کانکشنتون به پایگاه داده که می تونه شامل این سه مشکل باشه
1. پایگاه داده اتون موجود نیست
2. پایگاه داده موجوده اما امکان دسترسی بهش وجود نداره
3. پایگاه داده موجوده و امکان دسترسی وجود داره ولی خط فرمانتون برای ارتباط با بانک اشتباهه
برای اولی چک کنید که پایگاه دادتون توی مسیر نصب برنامه اتون موجوده یا نه
دومی هم باید دسترسی حالا رو چک کنید
سومی هم باید کدهای برنامه اتون رو چک کنید

سلام
1- دیتابیس رو تو پوشه bin قرار دادم
2- دسترسی ها رو هم در قسمت propertis فایل mdf فول کنترل کردم
3- کد هم ظاهرا مشکلی نداره؟
لطفا اگه راه حل دیگه مدنظرتون قرار بدید :ناراحت::ناراحت::ناراحت::نار حت::ناراحت:

ژیار رحیمی
پنج شنبه 10 دی 1394, 16:31 عصر
دوست گرامی شما احتمالا مشکل تداخل ورژن Sql server Express 2012 رو داری شما دقیقا همان نسخه Sql server Express 2012 رو که روی سیستم خودت نصب کردی باید روی سیستم مشتری نصب کنی.به احتمال زیاد دو ورژه متفاوت از Sql Server Express 2012 نصب کردی ورژن Sql دو سیستم رو بررسی کن
Microsoft® SQL Server® 2012 Express Version:11.0.2100.60
Microsoft® SQL Server® 2012 Service Pack 2 (SP2) Express Version:11.0.5058.0

majed_gh1992
یک شنبه 11 بهمن 1394, 13:49 عصر
دوست گرامی شما احتمالا مشکل تداخل ورژن Sql server Express 2012 رو داری شما دقیقا همان نسخه Sql server Express 2012 رو که روی سیستم خودت نصب کردی باید روی سیستم مشتری نصب کنی.به احتمال زیاد دو ورژه متفاوت از Sql Server Express 2012 نصب کردی ورژن Sql دو سیستم رو بررسی کن
Microsoft® SQL Server® 2012 Express Version:11.0.2100.60
Microsoft® SQL Server® 2012 Service Pack 2 (SP2) Express Version:11.0.5058.0

ممنون دوست عزیز
مشکل از ورژن sql بود. sql manengment 2012 روی سیستم نصب بود که همراه این ورژن 2008 sql express نصب میشه من اینو نمی دونستم. کاری که کردم این بود که یه اسکریپت از کل دیتابیسم گرفتم و اون تو 2008 sql express اجرا کردم دیتابیس ایجاد شد و روی سیستم مقصد هم به درستی کار میکنه.
اما مشکلی که وجود داره اینه که بعد از نصب نرم افزار باید به صورت دستی سطح دسترسی فایل mdf رو full کنترل کرد. آیا راه حلی برای این کار هست که خود برنامه این کار رو انجام بده؟ ممنون میشم راهنمایی کنید