Dragon Hunters Ответов: 3

Ссылка на объект не установлена на экземпляр объекта. Эта ошибка приходит в vb.... помогите мне, пожалуйста


Server Error in '/' Application.

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 


Line 33:     End Sub
Line 34:     Private Sub BindGrid()
Line 35:         Dim strConnString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Line 36:         Using con As New SqlConnection(strConnString)
Line 37:             Using cmd As New SqlCommand()

Source File: E:\LanguageLab\admin\listeningAplay.aspx.vb    Line: 35 

Stack Trace: 


[NullReferenceException: Object reference not set to an instance of an object.]
   admin_listeningAplay.BindGrid() in E:\LanguageLab\admin\listeningAplay.aspx.vb:35
   admin_listeningAplay.Page_Load(Object sender, EventArgs e) in E:\LanguageLab\admin\listeningAplay.aspx.vb:31
   System.Web.UI.Control.OnLoad(EventArgs e) +95
   System.Web.UI.Control.LoadRecursive() +59
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1637.0


Что я уже пробовал:

Imports System
Imports System.Web
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.IO

Partial Class admin_listeningAplay
    Inherits Page

    Protected Sub btnUpload_Click(sender As Object, e As EventArgs) Handles btnUpload.Click
        Using br As New BinaryReader(FileUpload1.PostedFile.InputStream)
            Dim bytes As Byte() = br.ReadBytes(CInt(FileUpload1.PostedFile.InputStream.Length))
            Dim strConnString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Using con As New SqlConnection(strConnString)
                Using cmd As New SqlCommand()
                    cmd.CommandText = "insert into Audio(Name, ContentType, Data) values (@Name, @ContentType, @Data)"
                    cmd.Parameters.AddWithValue("@Name", Path.GetFileName(FileUpload1.PostedFile.FileName))
                    cmd.Parameters.AddWithValue("@ContentType", "audio/mpeg3")
                    cmd.Parameters.AddWithValue("@Data", bytes)
                    cmd.Connection = con
                    con.Open()
                    cmd.ExecuteNonQuery()
                    con.Close()
                End Using
            End Using
        End Using
        Response.Redirect(Request.Url.AbsoluteUri)
    End Sub
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not IsPostBack Then
            BindGrid()
        End If
    End Sub
    Private Sub BindGrid()
        Dim strConnString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
        Using con As New SqlConnection(strConnString)
            Using cmd As New SqlCommand()
                cmd.CommandText = "select Id, Name from tblFiles"
                cmd.Connection = con
                con.Open()
                GridView1.DataSource = cmd.ExecuteReader()
                GridView1.DataBind()
                con.Close()
            End Using
        End Using
    End Sub

End Class

3 Ответов

Рейтинг:
24

Karthik_Mahalingam

Dim strConnString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString

Единственная возможная причина получения ошибки в приведенной выше строке-ключ "constr"нет в web.config файл. проверьте это и исправьте.

вы должны обратиться к этой статье, чтобы узнать об отладке и точно указать на ошибку
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]


Рейтинг:
14

OriginalGriff

Это одна из самых распространенных проблем, которые нам задают, и это также та, на которую мы меньше всего готовы ответить, но вы больше всего готовы ответить сами.

Позвольте мне просто объяснить, что означает ошибка: вы пытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, в котором вы держите ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень забавный вид, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего, что обычно делали бы, когда извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда это не должно быть.
Но вы можете - и Visual Studio поможет вам здесь. Запустите свою программу в отладчике, и когда она выйдет из строя, VS покажет вам строку, на которой она обнаружила проблему. Затем вы можете начать просматривать различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы выяснить, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз VS остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы сможете узнать!


Рейтинг:
12

Dragon Hunters

ConfigurationManager.connectionStrings = Object reference not set to an instance of a
i work on winxp with Net2 ver 2.0.50727 in the IIS (under ASP.NET) 
in my web.config file i have : 
[vb] 
<configuration> 
<connectionStrings> 
<add name="local_con" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=False;User Id=xxx;Password=xxxx;database=db1" 
providerName="System.Data.SqlClient" /> 

</connectionStrings> 
.... 
</configuration> 
[/vb] 
when i use on my pc this code : 

Code:
<%@ Page Language="vb" Debug="true" %> 
<%@ import Namespace="System.Data" %> 
<%@ import Namespace="System.Data.SqlClient" %> 
<%@ import Namespace="System.Configuration" %> 


<script runat="server"> 

Sub Page_Load(sender As Object, e As EventArgs) 
'declarations 
Dim conLath As SqlConnection 
Dim cmdLath As SqlCommand 
Dim rdrLath As SqlDataReader 
Dim connString As String = ConfigurationManager.connectionStrings("local_con").ConnectionString 

response.write("1") 
Using myConnection As New SqlConnection(connString) 
Try 
myConnection.Open() 
Catch Obj As Exception 
Response.Write(Obj.Message) 
Response.End() 
End Try 
'Create a SqlCommand instance 
Dim myCommand As New SqlCommand("select * from tbl1", myConnection) 
Dim reader As SqlDataReader = myCommand.ExecuteReader() 
myConnection.Close() 
End Using 
End Sub 

</script> 


everything works great! 
when i move my project to win2003 server i recive the next error : (the ASP.NET version there is the same!)