Firefoxがリダイレクト後に履歴URLハッシュを維持することを訴えるいくつかの投稿をオンラインで見ました。これは私が望んでいる動作です-Firefox(11.0)、Chrome(18.0)、Opera(11.61)で発生しますが、IEでは発生しません(9)またはSafari(5.1.2)。
私のページでは、ASP.NET 4.0の履歴ポイントが設定されて機能しています(数年間機能しています)。また、いくつかのクエリ文字列パラメータをページに渡します。私が今やろうとしているのは、新しいクエリ文字列paramの値を確認し、それが期待しているものと一致しない場合は、更新された値で同じページにリダイレクトすることです。私はこのメカニズムを使用してブラウザの個々のタブのセッションを追跡しているので、同じページが複数のタブで開いているときに、セッション値がタブからタブへと互いにステップしません。
とにかく、ASP.NET履歴ポイントを使用したバック/フォワードを含むすべてが正しく機能しています-ブックマークにアクセスしてクエリ文字列パラメーターが一致しない場合、セッションを追跡するためにクエリ文字列パラメーターをリダイレクトおよび変更し、履歴状態は次のようになりますブックマークのURLにあるは、ページを希望の状態にリロードするために使用されます。ただし、これはFirefox、Chrome、Operaでのみ機能します。私にとって大きなものであるIE(私たちのユーザーベースのみに基づく)ではなく、Safariでもありません。
URL履歴状態が存在しないという事実に加えて(またはおそらくそのため)、IEまたはSafariでのリダイレクト後にScriptManager.Navigateが呼び出されないことを確認しました。
ScriptManagerで、またはリダイレクト中にURLの履歴状態を維持するために設定できる設定/オプションはありますか? 履歴の状態がURLに含まれている場合、必要に応じてScriptManager.Navigateを直接呼び出すことができますが、値はURLに存在しません。
それがまったく役に立った場合は、ここに私がチェックしてリダイレクトする場所のリストがあります。次に、ReportRunIDが、各タブに固有である必要があるセッション変数キーに追加されます。以前のReportRunIDのリストを保持して、追跡し、それらをクリーンアップして(一定期間後、または[MAX] IDを超える場合)、これらのセッションエントリでサーバーメモリを過負荷にしないようにします。
Private Sub Page_PreInit(sender As Object, e As System.EventArgs) Handles Me.PreInit
If IsPostBack = False Then
Dim rrid As String = Request.QueryString("RRID")
If ReportRunIDExists(rrid) = False Then
ReportRunID = Now.ToString("_HHmmssfff")
Dim url As String = Request.Url.PathAndQuery
If String.IsNullOrEmpty(rrid) Then
Response.Redirect(String.Format("{0}&RRID={1}", url, _reportRunID))
Else
Dim idx As Integer = url.IndexOf("&RRID=")
Response.Redirect(String.Format("{0}&RRID={1}{2}", url.Substring(0, idx), _reportRunID, url.Substring(idx + 6 + rrid.Length)))
End If
End If
End If
End Sub
Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
'save current RRID/Page/Time to session
UpdateSessionReportRunID(_reportRunID)
End Sub
..。
ブックマークしたURLが次のようになっている場合:
mysite.com/mypage.aspx?Rpt=123&RRID=_095224678#&&state1=abc&state2=def...
リダイレクト後のFF/Chrome / Operaでは、私のURLは次のようになります。
mysite.com/mypage.aspx?Rpt=123&RRID=_102176253#&&state1=abc&state2=def...
しかし、リダイレクト後のIE / Safariでは、私のURLは次のようになります。
mysite.com/mypage.aspx?Rpt=123&RRID=_102176253
何か案は?