【发布时间】:2012-05-09 06:54:20
【问题描述】:
我有一个使用更新面板和一些按钮的 Asp.Net 4.0 网站/控制界面。更新面板连接到每 5 秒执行一次的计时器,从而导致部分回发。这些按钮切换一些设置,然后通过类似于以下的调用强制更新更新面板:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('<%= UpdatePanel.ClientID %>', '');
return true;
该网站在 IE/Firefox 和 Safari 移动设备 (IPhone/iPad) 上运行良好,但在移动设备上,回发随机且静默停止工作。我认为这可能与节省电池有关,并且 safari 在空闲时会关闭部分回发。问题是当用户返回站点时,回发被完全关闭,计时器和按钮都不再导致任何回发。 (我已经监控了服务器上的网络流量来验证这一点)。即使用户刷新网站(多次),部分回发也不会重新发挥作用。它只是停止向服务器发布数据。然后突然并且没有特别的原因回发再次开始工作。停机时间通常长达 10 分钟,这完全使我的网站无法达到目的。
鉴于回发需要很长时间才能再次开始,我想知道客户端或 IIS 中是否有任何设置可供使用?
该网站将仅在我的客户设备上运行,它不是公开的,所以如果在客户端上有任何设置可以玩,我准备好了。
我对此感到非常困惑,还没有找到触发“错误”的方法,它有时会发生。非常感谢任何建议和提示。
更新:
添加了一些错误处理,当回发失败时,我(并非始终如一地)收到以下消息:
页面正在执行异步回发,但 ScriptManager.SupportParialRendering 属性设置为 false。确保在回发期间将该属性设置为 true。
奇怪的是,这个属性在第一个实例中显然是正确的,否则回发将永远无法工作,事实并非如此。
更新 2: 发现以下博客文章建议更改 web.config 中的 browserCap 设置。现在试试这个。会回来汇报的。其他建议仍然很受欢迎。 ASP.NET 4 BrowserCaps (or: what were they thinking?)
以上内容在全屏模式下(从主屏幕运行)禁用 safari mobile 中的 javascript。以下文章建议解决此问题。 Gotcha: iPad versus ASP.NET
【问题讨论】:
标签: asp.net iis postback mobile-safari