0

完全に機能しているVS2010のReportViewer(rdlc)コントロールを使用して、AzureWebアプリケーションにレポートを表示しています。最近、クライアントから、ReportViewerのPrintイベントをキャプチャして、サーバーにエントリを記録するように求められました。印刷ボタンでフックしました。これは、ローカル環境でWebアプリケーションを実行するときに完全に機能します。ただし、Azureでは、Ajaxメソッドがクライアント側から呼び出されることはありません。何をすべきか提案してください?Azure環境でのAjaxに制限はありますか?

Page_Loadのページをコードビハインドで登録しています

protected void Page_Load(object sender, EventArgs e)
{
  Ajax.Utility.RegisterTypeForAjax(typeof(Pages.Report));

  ImageButton btnPrint = new ImageButton();
  btnPrint = ((ImageButton)(this.FindControl("ctl00$" + ReportViewer1.ClientID.Replace("_","$") + "$ctl06$ctl06$ctl00$ctl00$ctl00")));
  btnPrint.Attributes["onclick"] += "attachEventForPrint();";
}

 [AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]

 public static void LogEvent(int pLoggingEvent)
 {
  // Addded logic to log event
 }

そしてASPXファイルではJSに以下の機能が追加されました

 function attachEventForPrint() {
   if (typeof (Report) != "undefined") {
                Report.LogEvent(4);
            }
        }
4

1 に答える 1

1

良いニュースは、ajaxコントロールの使用に制限はないと思うことです。私はいくつか使用しましたが、それらは機能しました。

確認すべき点は次のとおりです。

  • Fiddlerを使用してHTTPトレースを表示できますか?印刷ボタンをクリックしたときにサーバーにリクエストが送信されていますか?
  • javascriptデバッガーを使用して、attachEventForPrintが発生したときにエラーが報告されていないことを確認できますか?
  • ここで「状態」、特にセッションストレージに問題はありますか?

もう1つ確認する必要があるのは、印刷ボタンにアクセスするためのより保守しやすい方法があるかどうかです。"$ctl06$ctl06$ctl00$ctl00$ctl00"現在または将来のある時点で問題が発生しているように見えます。

于 2011-05-03T10:59:20.403 に答える