2009-01-27 165 views
0

为了简单起见,后调用一个额外的aspx页面,我们有一些aspx页面...ASP.NET页面加载

Page1.aspx的 - 复位会话信息。
Page2.aspx - 用结果搜索表单并设置会话变量。
Page3.aspx,Page4.aspx,Page5.aspx - 需要会话变量上Page2.aspx

设置

我们现在发现的是,作为Page2.aspx加载并设置会话变量,Page1.aspx的是被召唤并重设会议。但是,Page1.aspx显示在浏览器中,而不是Page2.aspx。当我们逐步浏览代码时,我们才发现这种情况,并且在Page1.aspx和Page2.aspx的Page_Load事件中放置了断点,并且很惊讶地发现Page2.aspx在Page1.aspx停止处理服务器。

可能有用的信息...我们使用母版页,并且在母版页中有链接到Page1.aspx。除此之外,我在代码库中找不到任何对Page1.aspx的引用。

更新:
这可能是由于验证?看来,当我访问Page2.aspx时,服务器可能再次对Page1.aspx进行身份验证?这是典型的吗?

+0

请张贴一些代码,以便我们更好地理解问题。 – Eppz 2009-01-27 20:00:29

回答

1

感谢您的提示安德鲁。

我们弄清楚发生了什么......应用程序中的Page1.aspx实际上是Default.aspx。在Page2.aspx上,另一位开发人员在没有定义src属性的页面上放置一个img标签。因此,当Page2.aspx执行时,它正在寻找位于网站根级别的图像,然后触发Default.aspx(Page1)上的代码并清除会话。

整体而言,这看起来是这样的......

在Page2.aspx

<img src=""> <!-- this ended up triggering a call to Default.aspx, wiping the session --> 

希望帮助了别人。

0

启动Fiddler并正常运行应用程序。它会告诉你正在发生的流量,并确定哪些页面正在重定向到其他页面。一旦你知道了路径,你可以通过调查源代码来确定为什么这条路径存在。

您的应用程序域可能被回收,因此,所有的会话变量都会丢失,如果会话变量丢失,您可能有代码重定向访问者,对不对?

如果是这种情况,作为快速修复,您可以使用StateServer或将会话变量存储在Sql Server中。您的应用程序域不应该每分钟都在回收,但如果您正在将会话存储为“默认”,则可能会导致您看到的行为。