我需要找到一个方法来检测一个请求是当的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是真还是假这里]”着称。
这可以帮助你: 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版本的改变。 要时刻铭记在心!
我需要类似的东西,在L'院长的回答以下,想通.NET本身必须知道该怎么办。 展望与反射的HttpResponse.Redirect方法,你会看到这样的代码:
Page handler = Context.Handler as Page;
if (handler != null && handler.IsCallback)
{
//Code...
}
似乎工作在Global.asax中的罚款。
取决于你的问题的情况下。 我看你是在谈论ASP.NET中的标签,使用VB.NET。 你也许可以使用:
If Not Request.IsPostback Then
' Your code here
End If