2013-07-04 2 views
0

Я получаю эту ошибку, когда я запускаю свою программу:Объектная переменная или с переменной блока не установлена?

Первый шанс исключение типа «System.NullReferenceException» произошло в Microsoft.VisualBasic.dll

переменная объекта или переменная блока не установлена ​​

Вот мой код:

Dim rt As String = "" 
    Dim out As String 
    Dim wRequest As WebRequest 
    Dim wResponse As WebResponse 
    Dim SR As StreamReader 
    Dim time As Date 

    time = Now() 

    Try 
     wRequest = WebRequest.Create(Address) 
     wRequest.Timeout = 10000 
     wResponse = wRequest.GetResponse 
     SR = New StreamReader(wResponse.GetResponseStream) 
     rt = SR.ReadToEnd 
     SR.Close() 
    Catch wex As WebException 

     Dim status As WebExceptionStatus = wex.Status 

     If status = WebExceptionStatus.Timeout Then 
      MessageBox.Show("Could not establish a connection to the selected exchange server.", "Connection Timed Out", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
     ElseIf status = WebExceptionStatus.ConnectFailure Then 
      MessageBox.Show("Could not establish a connection to the selected exchange server.", "Connection Failed", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
     ElseIf status = WebExceptionStatus.ProtocolError Then 
      MessageBox.Show("Could not establish a connection to the selected exchange server.", "Connection Protocol Error", MessageBoxButtons.OK, MessageBoxIcon.Warning) 

     End If 

    End Try 
+0

Можете ли вы опубликовать полный след стека исключения? – antiduh

+0

@antiduh Я как бы новичок в VB.net, как я могу это сделать в VS 2012? Настроить точку разрыва где-нибудь? –

ответ

0

источник вашей ошибки могут быть у наша переменная Address. Пожалуйста, попробуйте префикс с http:// спереди.

Пример:

Address = "http://www.google.com" 

для получения более подробной дополнительной информации, пожалуйста, прочитайте MSDN WebRequest.Create Method (String)

+0

Это будет правильно, если сайт использует HTTP. – DeanOC

0

Я проверяю свой код и он работает отлично.

Вот demo хотя я сделал небольшое изменение на объявлении time переменной и положить строку на WebRequest.Create() как:

Dim time As Date = Now 

и

WebRequest.Create("https://www.google.fm") 

И согласно моему собственному поиску есть нечего беспокоиться об этой ошибке, см. ссылку ниже.

A first chance exception

0

Проблема заключается в том, что, скорее всего, wResponse.GetResponseStream терпит неудачу, потому что wResponse равна нулю. (вероятно, потому, что ваша адресная переменная недействительна).

Попробуйте добавить

Catch ex As Exception 

    MessageBox.Show("Some other error occurred: " + ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Warning) 

End Try 

после улова блока WebException, чтобы увидеть, в чем проблема.

Или просто положите точку останова на SR = New StreamReader(wResponse.GetResponseStream) и посмотрите на wResponse (на ваш выбор).

+0

Способ, которым я настраивал функцию, передаю переменную адреса функции с помощью этой кнопки: textbox1.text = getData ("http://somesite.com") ' –

+0

Я не уверен, как это относится к вашей исключение null ref. Если сайт может быть введен пользователем, вы всегда должны указывать код, где вводится неверный адрес и обрабатывать его. – DeanOC

Смежные вопросы