2

問題
SSRS を使用すると、デフォルトの Report.aspx と webconfig、state1 と state2 (以下) が等しくなります。
以下の webconfig、state1 および state2 を変更したカスタム report.aspx は等しくありません。

考えられる原因
webconfig オプションの変更により、セッション情報が保存されていない可能性があります..?
これは、レポートを参照してブラウザの戻るボタンを使用すると表示されます。

具体的なシナリオ:

  1. レポートを開く (パラメータ/フィルタあり、例: 年: 2012)
  2. デフォルトのフィルタ値を変更します。たとえば、年を 2011 に設定します (+submit) [ = state1 ]
  3. 詳細レポートに移動
  4. 戻る (年は再び 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 カスタム )
ステップ1のパラメータ設定

ステップ 2 ( = ステップ 4 のデフォルト、望ましい)
ステップ 2 のパラメータ設定

ステップ 4: デフォルトの ssrs に戻るとステップ 2 (必要に応じて) が得られ、カスタムを使用するとステップ 1 が得られます。カスタム ページでもステップ 2 に戻ることを達成したいと考えています。

WebkitInspector で調査を更新する

ssrs の既定の aspx で、ブラウザーに戻ります (必要な機能):

最初はフィルターもデフォルトの状態ですが、サーバーはページに追加の JS を書き込み、フィルターの以前の設定への更新を開始します。ポイントは、これらの追加のJSを「自動的に」記述する方法がわからないことです(プログラムで履歴を保存してチェックするのではなく、セッション/履歴に関連していると思います)。

さらに、次のことを提案されました。

  1. セッション パラメーターを調査するには、開発ツールバーまたはフィドラー/wireshark を使用します。
  2. 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 ..?

4

1 に答える 1

0

DLL のバグのように見えたと思います.一度チケットを作成しようとしましたが、プロセスのどこかで取り残されました..新しいバージョンでは修正されている可能性があります。

于 2015-09-11T14:42:57.710 に答える