2

我有一个 Web 应用程序(.NET 3.5),它在 Global.asax 中有这个代码:

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    LinkLoader()
    PathRewriter()
    PathAppender()
End Sub

我希望调用内部的所有这些函数,除非它是 AJAX 回调。因此,理想情况下,我会将其更改为:

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    If not Page.IsCallback then
        LinkLoader()
        PathRewriter()
        PathAppender()
    End If
End Sub

但是这里无法访问页面对象。所以,基本上我的问题是:

如何检查请求是否是 Application_BeginRequest 中的 AJAX 回调?

非常感谢您的任何反馈。

4

3 回答 3

1

您应该有权访问 HttpContext.Current.Handler 对象,您可以将其强制转换为 Page 对象并获取 Page.IsPostBack 或 Page.IsCallBack。尽管为了安全地执行此操作,您需要首先测试它是 Page 对象而不是 null:

With HttpContext.Current
   If TypeOf .Handler Is Page Then
      Dim page As Page = CType(.Handler, Page)
      If page IsNot Nothing AndAlso (page.IsCallBack OrElse page.IsPostBack) Then
         'Do something
      End If
   End If
End With
于 2009-12-18T18:45:47.460 回答
1

约翰,

感谢您为我指明正确的方向。解决方案实际上是检查 Request.Form("__ASYNCPOST")。如果它是回调,则设置为“true”。

非常感谢你的帮忙!

于 2009-07-10T19:00:27.673 回答
0

据我了解,IsCallback 所做的就是检查表单是否有一个名为 __CALLBACKARGUMENT 的 post 变量。您可以在 Context.Request.Form 中自己检查表单,这应该告诉您与 IsCallback 相同的内容。

于 2009-07-10T17:35:04.053 回答