问题描述
|
我有一个不寻常的问题。 Web应用程序中的每个页面都加载两次!调试时,onload事件被击中两次。我检查了iis日志,并看到了相同的日志。
我的应用程序是.net 3.5,在IIS7中运行的asp.net c#。
它发生在多个不同的环境中。
它不仅是一页,而是网站上的所有页面。为了测试这一点,我创建了一个空白页面,没有标记。我读取的图片或iframe上的源代码不为空,可能会导致它。我还从web.config和httphandlers中删除了所有httpmodules,但是它仍在发生。
我现在没主意了,所以有人对我有什么建议或提示吗?
解决方法
可能有不同的原因,
在不同的浏览器中签入,查看是否有任何加载项导致此情况。
检查PostBack是否正在调用下一次加载
查看您是否处于调试模式,然后尽可能调试代码以查看其方式
真正加载两次。
,我知道您已经回答了自己的问题,但是对于落在这里的其他人...
几年前,我发现(经过几天的挫败后)每次回发页面都加载两次,因为有人编写了自定义控件来呈现html内容,但是这些控件中存在一个错误,导致标记格式错误(我不知道记不清到底是什么,也许他们忘记了某个地方的结束标记),这导致我的浏览器重新加载页面。
查找您的浏览器在生成的标记中可能发现的任何错误,并在排除故障时更正这些错误。
,您需要检查是否将AutoEventWireUp设置为true,并且还正在手动将侦听器添加到Load事件。这(或某些变体)将成为您的问题(这是相当普遍的;这里有很多与此相关的问题)。
,我认为最好使用一些Web调试器工具来跟踪请求。我建议使用提琴手
,就我而言,奇怪的是,偶尔会触发两次page_load。我花了大约10天的时间来测试和试用。尝试了所有可能的解决方案。
在意识到Default.aspx也会触发两次page_load之后,只有我们才能确认这是URL重写引起的。遗憾的是,web.config中的重写代码没有任何问题。
<rule name=\"Redirect to https\" enabled=\"true\" stopProcessing=\"true\">
<match url=\".*\" />
<conditions>
<add input=\"{HTTPS}\" pattern=\"off\" ignoreCase=\"true\" />
</conditions>
<action type=\"Redirect\" url=\"https://{HTTP_HOST}{REQUEST_URI}\" redirectType=\"Permanent\" appendQueryString=\"false\" />
</rule>
我们通过从web.config中删除SSL和以上代码,重新导入SSL并重新添加以上代码,解决了该问题。