我对传统的asp.net webforms应用程序有一个非常奇怪的问题。 我正在开发一个非常简单的用户跟踪方法,如果查询字符串参数等于某事,我需要在页面加载中调用单个子例程。 例如:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Request.QueryString("rf") = "dem" Then
TrackUser();
End If
End Sub
荒谬的是,如果我通过www.mydomain.com/Default.aspx?rf=dem加载网站,则会调用TrackUser()。 相反,如果我加载www.mydomain.com/?rf=dem,则不会调用TrackUser()。
我认为这是关于查询字符串的问题,所以我写了类似的内容:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write("Test page_load")
If Request.QueryString("rf") = "dem" Then
TrackUser();
End If
End Sub
和"测试page_load"如果我通过www.mydomain.com访问该网站,则不会写入。 怎么样?
答案 0 :(得分:2)
您可能在某处导致输出缓存导致从先前构建的字符串返回页面。
答案 1 :(得分:1)
为什么不将此代码放在Global.asax的Application_BeginRequest
事件中?
Sub Application_BeginRequest(Byval sender As Object, ByVal e As EventArgs)
' Fires at the beginning of each request
If Request.QueryString("rf") = "dem" Then
TrackUser()
End If
End Sub
答案 2 :(得分:0)
奇怪的是,我再次重新部署,现在它可以工作了。我认为缓存的问题与我在第一次部署中首次删除“Outputcache标记”时未正确“回收”缓存的应用程序池有关。 谢谢你的回复;抱歉这个无用的问题。