我的设置:在 IIS 6.0 上运行的 ASP.NET 4.0 网站。
我有一个站点,其中包含许多带有虚拟 URL 的登录页面,所有页面都由单个物理登录页面.aspx 文件(通过 ASP.NET 4.0 路由)提供服务,我在其中使用OutputCache指令,将页面缓存在服务器上 24 小时。
最近,我开始遇到__doPostBack一些生成的页面中缺少 JavaScript 块的问题。页面中有一个 LinkButton(在 webusercontrol 内),所以 JS 块应该在那里,但有时它没有。这自然会导致在单击 LinkButton 时浏览器中出现 JS 错误。
我的怀疑是,可能在第一次访问由上述物理 .aspx 文件处理的给定 URL 时,它可能是客户端(浏览器或搜索机器人)的访问,这可能被 ASP.NET 视为故障级浏览器,因此 doPostBack 没有输出到生成的页面缓存版本中,然后将这个错误的缓存版本提供给所有后续访问者......?另一方面,我想说 ASP.NET 足够聪明,可以为不同级别的浏览器生成不同的缓存版本,不是吗?
尽管如此,我的问题是:我能否在服务器的某个地方找到提供给访问者的缓存文件,并以某种方式检查我的假设是否正确?另外,我想完全禁用浏览器的这种 ASP.NET 识别,并为每个浏览器提供相同的内容,就像它为任何现代浏览器提供服务一样。
非常感谢您的任何建议和帮助。
回答我自己的问题:确认网站正在为无法识别的浏览器发回没有 __doPostBack() 的 HTML。将 ClientTarget="uplevel" 添加到有问题的 .aspx 页面顶部的 @ Page 指令解决了这个问题,并且 __doPostBack() 块现在总是存在。
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |