PDA

View Full Version : سوال: دلیل بروز خطای Object reference not set to an instance of an object چیست؟



A.Eimani
پنج شنبه 20 آبان 1389, 15:51 عصر
سلام دوستان
من یک صفحه دارم به عنوان گالری تصاویر که وقتی چند tab از دسته بندی های مختلف باز میکنم به این صورت : http://***/Gallery.aspx?Cat=4
این ارور رو میده :
60079
و وقتی بعدش که این ارور رو داد بک میکنم یا صفحه دیگه ای رو ادرس میدم این ارور رو میده :
60080

در ضمن من تمام کانکشن ها رو با try finally میبندم

این کد ASP.NET هست ممکن هست بخاطر این باشه؟ :



<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<a class="vln" title="<%# Container.dataitem("CatName") %>" href="<%# geturl(Container.dataitem("id")) %>"><img width="168px" height="110px" src="<%# Container.dataitem("Catpic") %>" alt="<%# Container.dataitem("catdes") %>"/><div><%# Container.dataitem("catName") %></div></a>
</ItemTemplate>
</asp:Repeater>



میشه راهنمایی کنید مشکل از کجاست؟

persian_bigboy
پنج شنبه 20 آبان 1389, 18:51 عصر
دوست من زیاد سخت نیست فهمیدنش . شما یک فیلد رو داری استفاده میکینی که در SELECT نیست همین و برنامه خطا میده یا اینکه DS رو اشتباه پر کردی همین .

persian_bigboy
پنج شنبه 20 آبان 1389, 18:53 عصر
راستی عکس دوم رو الان دیدم .

دوست وخوبـــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــم. همگی بخونین .
شما کانکشن باز دارید . بعد بیشتر از 3 الی 5 کانکشن . و Pool سرور قفل میکنه . بگرد . ببین db Connection ها رو چک کن . بیشتر این مشکل زمانی هست که شما SQLDataReader استفاده کنی . مشکل از Repeater نیست .

A.Eimani
پنج شنبه 20 آبان 1389, 23:04 عصر
در ضمن من تمام کانکشن ها رو با try finally میبندم
و هیچ کانکشنی هم باز نمیمونه
خوب توصیه تون چیه؟
چی کنم؟

amirjalili
پنج شنبه 20 آبان 1389, 23:26 عصر
توصیه اینه که اول یه سری به تایپیک مرجع کامل خطا ها و باگ ها بزنید. اگه به جواب نرسیدید بعد پست بدید.

persian_bigboy
جمعه 21 آبان 1389, 00:05 صبح
البته واقعیت این هست ، که دوستان نیومده دنبال پاسخ هستند و با کلمه جستجو آشنا نیستند . ولی ما باز جواب را دادیم که نگن بی معرفت :لبخند:

alonemm
جمعه 21 آبان 1389, 16:19 عصر
دوست من اگه شما مطمعن هستيد كه كانكشن رو بستيد شي SQLDataReader رو هم از بين ببريد.


SQLDataReader.Disposed()

persian_bigboy
جمعه 21 آبان 1389, 17:34 عصر
SQLDataReader.close()
این رو باید بزنی

Himalaya
جمعه 21 آبان 1389, 18:45 عصر
البته بهتره با یه شرط اول چک بشه، در غیر این صورت ممکنه موقع close کردن ارور بده


if (SQLDataReader != null)
SQLDataReader.Close();

A.Eimani
یک شنبه 23 آبان 1389, 00:02 صبح
دوستان عزیز هر کاری گفتید کردم بازم مشکل سرجاش بود و ارور Timeout expired رو میده بعداز 4 دفعه باز کردن صفحه
این کد اصلی من هست

با Pooling=False درست شده ولی خب اصولی نیست ولی اشکال هم فکر نمیکنم داشته باشه این سایت نهایت کاربر همزمانش شاید 50 تا باشه اشکال داره؟

چه تغییری توی این کد بدم که درست بشه؟



Dim Cat As String = Request.QueryString("Cat")
Dim ConnectionString As String = WebConfigurationManager.ConnectionStrings("AFLConnection").ConnectionString
Dim Conn As New SqlConnection(ConnectionString)
Dim CmdCheck As SqlCommand
Dim Dtr As SqlDataReader

If Cat <> "" Then
Cat = Cat.ToString.Trim
Try
Conn.Open()
CmdCheck = New SqlCommand("select * from Gallery where Cat_Id=" & Cat, Conn)
Dtr = CmdCheck.ExecuteReader
Repeater1.DataSource = Dtr
Repeater1.DataBind()
Catch ex As Exception
NotCat.Visible = True
NotCat.InnerText = "دسته ی مورد نظر یافت نشد!!!"
Finally
Conn.Close()
End Try
End If

A.Eimani
یک شنبه 23 آبان 1389, 18:13 عصر
کسی هست مرا یاری کند؟

alilovegood
سه شنبه 19 بهمن 1389, 15:07 عصر
متاسفانه كسي نيست.
واسه من يه سوالي پيش اومده،چرا توي برنامه نويس دات اُ آر جي اينقدر سوال ها زياده و اين قدر جواب ها كم؟!