这是我的.Net 2 ASP.Net代码,它曾经在Win 2000和IIS3上托管时工作。
'在Page_Load中,如果它不是PostBack,则删除缓存的报表对象,以便稍后强制该代码重建它。
在Win2000和IIS3下单击链接以加载页面时,在Page_Load中它将调用Session.Remove(“ReportObject”),然后在FillRptParams中实现Session(“ReportObject”)为Nothing并重新加载。 / p>
我最初将所有会话代码放入其中以确保在Crystal Report页面请求之间不会继续访问数据库,它只会将会话变量中的ReportObject显示在下一页。
现在我已经切换到Win 2003和IIS6我总是得到SAME报告,即使点击链接,因为我习惯了导致IsPostBack为假并删除Session对象。
我希望IIS6下的一些设置可以使它像以前一样运行。
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
Session.Remove("ReportObject")
End If
End Sub
Sub FillRptParams(ByVal snavcode As String, Optional ByVal CrystalOrPDForEXCEL As String = "")
If Not Session("ReportObject") Is Nothing Then
bReportCached = True
Else
bReportCached = False
End If
oSqlCmd = New SqlCommand
If bReportCached Then
orpt = Session("ReportObject")
Else
orpt = New rptUsageSummaryNew
oSqlCmd.CommandText = "HOSP_RPT_UsageAllSummary"
oDS = oDataAccess.GetReportDataSet(Session("Group"), oSqlCmd)
orpt.SetDataSource(oDS)
'Cache the report object so we don't have to load it again next time
Session.Remove("ReportObject")
Session.Add("ReportObject", orpt)
End If
End Sub
答案 0 :(得分:0)
在Page_init事件中移动代码,而不是在page_load中移动代码。 移动它后,请禁止“if postback code”。