我在调用以下函数时收到“此上下文错误中没有响应”:
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
我已经更改了在Response.Write之前添加System.Web.HttpContext.Current的行,我得到'对象引用没有设置为对象的实例'。
提供一些背景知识:正如您所见,tope.aspx在topframe中打开。加载后,它会立即启动我定义的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
正如您所看到的,我已在Global.asax中声明了CustomTimer。 CustomTimer对象每5秒引发一次Advertise事件,并将'inNumber'作为tope.aspx页面的参数传递给刷新一些标签,这很简单。 CustomTimer是我管理计时器的一个类,它不会继承任何其他类(对于我在搜索中学到的东西,它必须继承一些httpthing,但我不确定)。我猜测在某些时候httpcontext正在丢失(我在谷歌搜索过,我无法想象它的生命周期或任何告诉我它为什么会死的信息)。任何人都可以帮我找出问题所在吗?
感谢
答案 0 :(得分:0)
您的计时器存在于tope页面类之外,因此在页面的响应完成且不再有HttpContext.Current实例后,可能会触发计时器事件。
听起来你要做的就是在页面加载后每隔5秒更改页面上的广告横幅。您需要使用javascript计时器执行此操作,该计时器将每5秒触发一次并向您的Web服务器发出请求以获取新广告。