問題
SSRS を使用すると、デフォルトの Report.aspx と webconfig、state1 と state2 (以下) が等しくなります。
以下の webconfig、state1 および state2 を変更したカスタム report.aspx は等しくありません。
考えられる原因
webconfig オプションの変更により、セッション情報が保存されていない可能性があります..?
これは、レポートを参照してブラウザの戻るボタンを使用すると表示されます。
具体的なシナリオ:
- レポートを開く (パラメータ/フィルタあり、例: 年: 2012)
- デフォルトのフィルタ値を変更します。たとえば、年を 2011 に設定します (+submit) [ = state1 ]
- 詳細レポートに移動
- 戻る (年は再び 2012 年に設定されます) [ = state2 ]
既定の SSRS report.aspx を使用すると、前に戻る (手順 4) のは予想どおり 2012 年です。ただし、私のカスタム webconfig+ReportViewer aspx では、フィルターが以前とは異なります (2011 年も)。
以前に発生したエラーをバイパスするための web.config への変更:
タイプ Microsoft.ReportingServices.UI.WebControlConnection、ReportingServicesWebUserInterface、Version=10.0.0.0、Culture=neutral、PublicKeyToken=89845dcd8080cc91 は IReportServerConnection を実装していません
web.config には次のものが含まれるようになりました。
<appSettings>
<add key="ReportViewerServerConnection" value="Microsoft.ReportingServices.UI.WebControlConnection, ReportingServicesWebUserInterface, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
<add key="ReportViewerTemporaryStorage" value="Microsoft.ReportingServices.UI.ReportViewerTemporaryStorage, ReportingServicesWebUserInterface, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
<clear/><!-- added -->
</appSettings>
エラーを回避するには:
リモート モードでは、Report Viewer コントロールは、セッション状態が有効になっているか、構成ファイルで指定された Report Server 接続情報を必要とします。
私は変わった:
<httpModules>
<clear />
<add name="Session" type="System.Web.SessionState.SessionStateModule"/><!-- added -->
...
...
</httpModules>
ご意見、ご提案、解決策をお寄せいただければ幸いです。
更新:
前述の手順への追加のスクリーンショット:
ステップ 1 ( = ステップ 4 カスタム )
ステップ 2 ( = ステップ 4 のデフォルト、望ましい)
ステップ 4: デフォルトの ssrs に戻るとステップ 2 (必要に応じて) が得られ、カスタムを使用するとステップ 1 が得られます。カスタム ページでもステップ 2 に戻ることを達成したいと考えています。
WebkitInspector で調査を更新する
ssrs の既定の aspx で、ブラウザーに戻ります (必要な機能):
最初はフィルターもデフォルトの状態ですが、サーバーはページに追加の JS を書き込み、フィルターの以前の設定への更新を開始します。ポイントは、これらの追加のJSを「自動的に」記述する方法がわからないことです(プログラムで履歴を保存してチェックするのではなく、セッション/履歴に関連していると思います)。
さらに、次のことを提案されました。
- セッション パラメーターを調査するには、開発ツールバーまたはフィドラー/wireshark を使用します。
- ReportServerTempDb のクエリ
#1を試してみますが、#2に関してどこから始めればよいか本当にわかりません.
更新:
どうやら IE のみのようですが、BrowserNavigationCorrector.js が含まれています。ページをレンダリングすると、最初に初期化が実行されsetTimeout('doInitialize',0)
ます。その後、doInitialize が実行される前に、ページは JS を書き込み/レンダリングしadd_init(*NavigationCorrectioncode*);
ますOnAppLoad()
。その後、他のすべてが発生し、pagestate の値が Loaded になります。
次に、サブレポートに移動してヒットバックすると、ページはメモリ内に「読み込み済み」の状態になります。そのため、NavigationCorretor がそのコードを実行し、pagestate IS Loaded が実行されると、TriggerPostBack スクリプトがトリガーされます。これにより、パラメータ値を更新するコールバックが実行されます。
WebForms.dll v11 を使用すると、BrowserNavigationCorrector.js が存在しません。また、Chrome を使用すると、SSRS ネイティブまたは dll の使用にも含まれません。
基本的に、そのファイルを手動で含めることを試みることができます。または、現在、v12 ..?