繁体   English   中英

加载后,ASP.NET页将调用另一个aspx页

[英]ASP.NET Page calls an additional aspx page after loading

为了简单起见,我们有一些aspx页面...

Page1.aspx-重置会话信息。
Page2.aspx-搜索带有结果的表单并设置Session变量。
Page3.aspx,Page4.aspx,Page5.aspx-需要在Page2.aspx上设置会话变量

我们发现,当Page2.aspx加载并设置Session变量时,将调用Page1.aspx并重置Session。 但是,Page1.aspx显示在浏览器中,而不是Page2.aspx。 当我们单步执行代码并将断点放在Page1.aspx和Page2.aspx的Page_Load事件中时,我们才发现发生了这种情况,并且惊讶地发现Page2.aspx在Page1.aspx停止处理后立即在处理服务器。

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

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

感谢小费安德鲁。

我们知道发生了什么...应用程序中的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 -->

希望这可以帮助其他人。

启动Fiddler并正常运行该应用程序。 它会告诉您正在发生的流量,并确定哪些页面正在重定向到其他页面。 知道路径后,您可以通过调查源代码来确定该路径存在的原因。

您的应用程序域有可能正在回收,因此所有会话变量都将丢失,如果缺少会话变量,您可能已经编写了重定向访问者的代码,对吗?

如果是这种情况,作为快速解决方案,您可以使用StateServer或将会话变量存储在Sql Server中。 您的应用程序域不应该每分钟都在回收,但是如果您将会话存储在“处理中”,这可能会导致行为,这是默认设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM