如何检测如果请求是在Global.asax的回调?(How do I detect if a req

2019-09-18 07:01发布

我需要找到一个方法来检测一个请求是当的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是真还是假这里]”着称。

Answer 1:

这可以帮助你: http://msdn.microsoft.com/en-us/magazine/cc163941.aspx
搜索词__CALLBACKID:

为了确定回调模式下,ASP.NET运行时查找请求集合中__CALLBACKID条目。 如果找到这样的条目,运行时的结论是,回调调用正在取得。

我们需要从的app_code文件中做到这一点,其中访问Page.xxxx对象不可用。 这是我最后使用的代码:

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版本的改变。 要时刻铭记在心!



Answer 2:

我需要类似的东西,在L'院长的回答以下,想通.NET本身必须知道该怎么办。 展望与反射的HttpResponse.Redirect方法,你会看到这样的代码:

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

似乎工作在Global.asax中的罚款。



Answer 3:

取决于你的问题的情况下。 我看你是在谈论ASP.NET中的标签,使用VB.NET。 你也许可以使用:

If Not Request.IsPostback Then
  ' Your code here
End If


文章来源: How do I detect if a request is a callback in the Global.asax?