Windows Azure中的AjaxMethods不工作

本文关键字:工作 AjaxMethods 中的 Azure Windows | 更新日期: 2023-09-27 17:54:36

我们正在使用VS2010中的ReportViewer (rdlc)控件在Azure web应用程序中显示报告,该控件工作完美。最近,我的客户要求我捕捉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);
            }
        }

Windows Azure中的AjaxMethods不工作

好消息是我不认为使用ajax控件有任何限制——我用过一些,它们都很好用。

检查的内容可能是:

  • 你可以使用提琴查看HTTP跟踪-是一个请求被发送到服务器,当你点击打印按钮?
  • 你可以使用一个javascript调试器来检查有没有错误报告时,attachEventForPrint发生?
  • 这里有任何问题与"状态"-特别是与会话存储?

另一件要检查的事情是是否有一种更易于维护的方式来访问打印按钮- "$ctl06$ctl06$ctl00$ctl00$ctl00"看起来就像现在或将来的某个时候正在自找麻烦