2012-05-31 2 views
0

Я получаю «ответ не доступен в этом контексте ошибке» вызывающей следующей функции:Проиграл HttpContext в пользовательском событии

Private Sub ReloadPage(ByVal inNumber As Integer) Handles tempaux.Advertise 
    'Response.Redirect("tope.aspx?dep=" & CStr(inNumber)) 
    Response.Write("<script>window.open('tope.aspx?dep= & CStr(inNumber)','topFrame');</script>") 
End Sub 

Я изменил линию, добавив к System.Web.HttpContext. Текущий до Response.Write и я получаю 'Ссылка на объект не установлена ​​в экземпляр объекта'.

Чтобы дать некоторый фон: tope.aspx, как вы можете видеть, открывается в верхнем кадре. Как только он загружает его запускает объект CustomTimer я определил:

Public Class tope 
    Inherits System.Web.UI.Page 
    Public funciones As funciones = New funciones 
    Dim WithEvents tempaux As CustomTimer = Global.objCustomTimer 

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim inUserProfile As Int64 
     Try 
      tempaux.StartTimer() 
     Catch ex As Exception 
      'bla bla 
     End Try 

Как вы можете видеть, я объявил CustomTimer в Global.asax. Объект CustomTimer вызывает событие «Реклама» каждые 5 секунд и передает «inNumber» в качестве параметра для страницы tope.aspx, чтобы обновить некоторую метку, простую вещь. CustomTimer - это класс, который я создал для управления таймером, он не наследует какой-либо другой класс (для того, что я узнал в своем поиске, он должен наследовать некоторые HTTP-файлы, но я не уверен). Я предполагаю, что в какой-то момент httpcontext теряется (я искал в google, и я не мог понять его жизненный цикл или любую информацию, которая говорит мне, почему она «умирает»). Может ли кто-нибудь помочь мне выяснить, в чем проблема?

благодаря

ответ

0

Вашего таймер не существует вне класса пьянствовать страницы, так что возможно, что событие таймера стрельбы после получения ответа от страницы завершен, и там больше не является экземпляр HttpContext.Current.

Похоже, что вы пытаетесь изменить рекламный баннер на странице каждые 5 секунд после загрузки страницы. Вам нужно сделать это с помощью таймера javascript, который будет срабатывать каждые 5 секунд и вернуть запрос на ваш веб-сервер для новой рекламы.

+1

Хммм Я понимаю. Дело в том, что время «обновления» получается из базы данных, и его можно даже изменить во время выполнения, кроме того, мне приходится перезагружать страницу, давая ей параметр, также полученный из базы данных. Идея Mi заключалась в том, чтобы управлять всем с VB. Разве нет способа создания HttpContext, как это делает приложение, когда вы нажимаете кнопку, а затем используете Respose.Redirect? Я предполагаю, что другой вариант - использовать AJAX, но поскольку я использую Visual Studio 2003, я не знаю, хорошо ли он поддерживается. – user1428789

+0

Вы можете попытаться создать HttpContext, но Response не вернется в браузер пользователя, так как он не инициировал запрос. Основываясь на описании в вашем вопросе, я считаю, что javascript - это то, что вам нужно, чтобы обновить объявление. Если нет, вам нужно предоставить более подробное описание. – slolife

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