4

我需要找到一种方法来检测调用 Application_BeginRequest 方法时请求是否是回调。

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)<br />
    Dim _isCallBack As Boolean = False

    ' Code to set _isCallBack is True or False Here

    If Not _isCallBack Then
        '... Some Code
    End If
End Sub

我需要知道用什么替换“[设置_isCallBack的代码在此处为真或假]”。

4

3 回答 3

3

这可能会对您有所帮助:http: //msdn.microsoft.com/en-us/magazine/cc163941.aspx
搜索单词 __CALLBACKID:

为了确定回调模式,ASP.NET 运行时在 Request 集合中查找 __CALLBACKID 条目。如果找到这样的条目,则运行时断定正在进行回调调用。

我们需要在无法访问 Page.xxxx 对象的 app_code 文件中执行此操作。这是我最终使用的代码:

If Not IsNothing(HttpContext.Current.Request("__CALLBACKID")) Then
    'The request is a callback
Else
    'The request is not a callback
End If

也许不是最漂亮的解决方案,但它可以完成工作。我们使用 Array.IndexOf 有一段时间了,但似乎有时该表单参数以小写参数的形式返回(不知道为什么或如何),并且 Array.IndexOf 是区分大小写的搜索。

小心寻找这些类型的 __XXXX 请求键。我记得在某处读到过“捷径”这些元素并不是一个好主意,因为它们的名称可能会在未来的 .net 版本中发生变化。要时刻铭记在心!

于 2009-08-24T20:44:30.190 回答
2

我需要类似的东西,并且按照 Dean L 的回答,认为 .NET 本身必须知道该怎么做。查看带有 Reflector 的 HttpResponse.Redirect 方法,您会看到如下代码:

Page handler = Context.Handler as Page;
if (handler != null && handler.IsCallback)
{
    //Code...
}

似乎在 Global.asax 中工作正常。

于 2010-06-11T01:53:36.800 回答
1

取决于你的问题的上下文。我看到你在标签中谈论 ASP.NET,使用 VB.NET。您可能可以使用:

If Not Request.IsPostback Then
  ' 你的代码在这里
万一
于 2009-07-11T02:41:41.410 回答