0

次の関数を呼び出して、「このコンテキストエラーでは応答が利用できません」というメッセージが表示されます。

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は、ご覧のとおり、トップフレームで開かれています。ロードされるとすぐに、私が定義した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イベントを発生させ、tope.aspxページのパラメーターとして「inNumber」を渡してラベルを更新します。これは簡単なことです。CustomTimerは、タイマーを管理するために作成したクラスであり、他のクラスを継承しません(検索で学んだことについては、httpthingを継承する必要がありますが、よくわかりません)。ある時点でhttpcontextが失われていると推測しています(Googleで検索したところ、そのライフサイクルや、なぜ死ぬのかを教えてくれる情報がわかりませんでした)。誰かが私に問題が何であるかを見つけるのを手伝ってもらえますか?

ありがとう

4

1 に答える 1

0

タイマーはトップページクラスの外部に存在するため、ページからの応答が完了した後にタイマーイベントが発生し、HttpContext.Current インスタンスがなくなる可能性があります。

ページが読み込まれると、ページ上の広告バナーを 5 秒ごとに変更しようとしているように思えます。JavaScript タイマーを使用してこれを行う必要があります。このタイマーは 5 秒ごとに起動し、Web サーバーに新しい広告のリクエストを返します。

于 2012-05-31T16:41:18.207 に答える