更新パネルといくつかのボタンを使用するAsp.Net 4.0 Webサイト/コントロールインターフェイスがあります。更新パネルは、5秒ごとに実行されるタイマーに配線され、部分的なポストバックが発生します。ボタンはいくつかの設定を切り替えた後、これと同様の呼び出しにより更新パネルの更新を強制的に:ASP.NET Ajaxポストバックが突然IPhone/IPadで停止する
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('<%= UpdatePanel.ClientID %>', '');
return true;
サイトはIE/Firefoxの上とSafariのモバイル機器(IPhone/iPadアプリ)ではなく、モバイル上で正常に動作しますポストバックをランダムにデバイスに通知し、サイレントで作業を停止します。私はこれを図は、電池を節約することと関係があり、サファリはアイドル時に部分的なポストバックをシャットダウンすると判断します。問題は、ユーザーがサイトに戻ったときに、ポストバックが完全に停止し、タイマーもボタンもポストバックがなくなることです。 (私はこれを確認するためにサーバー上のネットワークトラフィックを監視しています)。ユーザーがウェブサイトをリフレッシュしても(複数回)、部分的なポストバックが再生に戻ってくることはありません。サーバーへのデータのポストを止めるだけです。その後、突然、特に理由なく、ポストバックが再び働き始める。停止時間はしばしば最大10分であり、その目的のために私のウェブサイトは完全に役に立たない。
ポストバックが再び始まる前にもう一度時間がかかることを考えれば、クライアント側またはIISで再生する設定があるのだろうか?
ウェブサイトは私の顧客のデバイス(公開されていないデバイス)でのみ動作します。そのため、クライアントで再生する設定があれば、私はそれを実現しています。
私はこれについて本当に混乱していて、 "バグ"を引き起こす方法を見つけていません。アドバイスやヒントは非常に高く評価されています。
更新:
は、いくつかのエラー処理を追加しましたし、私は(ない一貫)ポストバックが失敗したときに次のメッセージが表示されています:
ページは、非同期ポストバックが、のScriptManagerを行っています。 SupportParialRenderingプロパティはfalseに設定されます。ポストバック時にプロパティがtrueに設定されていることを確認してください。
このプロパティは、最初のインスタンスのデバイスにとって明らかに十分です。そうでない場合は、ポストバックがうまくいきません。
アップデート2: browserCapは、web.configファイルに設定を変更することを示唆しているfolloingのブログの記事を見つけました。これを今試みている。報告する。他の提案はまだ大いに歓迎されています。 ASP.NET 4 BrowserCaps (or: what were they thinking?)
上記は、フルスクリーンモード(ホーム画面から実行中)のSafariモバイルでjavascriptを無効にします。次の記事では、この問題の修正を提案しています。 Gotcha: iPad versus ASP.NET
ありがとう@Avada Kedavra!まったく同じ問題があったので、 ' 'それを修正しました。とても有難い! 'Page_PreInit'セクションにまだ入れていないのですが、これはMasterPageに置くだけで全ページを処理できるのでしょうか? –
@mcpDESIGNS:私はそれを試していませんが、コードを少なくして解決策を作る方法に興味があります。あなたが提案したアプローチで成功しましたか? –
もう少しテストをしなければならないでしょう。私はあなたに知らせるでしょう!そして、私は 'Page_PreInit'をマスターページに置くと、すべての子ページにコピー/貼り付けする必要がなくなります。 –