2011-05-03 74 views
0

我们在使用VS2010中的ReportViewer(rdlc)控件的Azure Web应用程序中显示报告,该报告运行良好。最近,我的客户要求我为ReportViewer捕获Print事件并在服务器上记录一个条目。我已经用打印按钮挂钩了。当我在本地环境中运行Web应用程序时,这非常有效。但是,在Azure上,Ajax方法永远不会从客户端调用。请建议做什么? Azure环境中的Ajax是否存在限制?Windows Azure中的AjaxMethods不起作用

我注册页面上的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); 
      } 
     } 
+0

我从来没有使用过Microsoft Ajax,但我使用jQuery和Ajax在我们的MVC应用程序中没有问题。 – vtortola 2011-05-03 09:31:05

回答

1

好消息是,我不认为有使用ajax控件的任何限制 - 我已经使用了一些,他们只是工作。

有些事情要检查可能是:

  • 您可以使用Fiddler来查看HTTP跟踪 - 当你点击打印按钮的请求被发送到服务器?
  • 可以使用javascript调试器来检查attachEventForPrint发生时是否报告没有错误?
  • 这里有什么问题与“国家” - 特别是与会话存储?

另一件事是检查是否有访问打印按钮更易于维护的方式 - "$ctl06$ctl06$ctl00$ctl00$ctl00"只是看起来像它是自讨苦吃无论是现在或在某一时刻在未来

+0

好回复Stuart!我按照你的建议使用了Fiddler,发现当我点击Azure中的打印按钮时没有生成请求。对于会话存储,我使用TableSessionState提供程序..是否有任何特定的配置? – RightSideOfWrong 2011-05-04 08:38:43

+0

如果在Fiddler中什么都没有显示,那么它表明客户端代码出错了 - 检查事物的javascript方面 - 例如,使用IE F12,Chrome调试器或萤火虫。祝你好运! – Stuart 2011-05-04 09:48:06

+0

谢谢..使用fiddler + jQuery解决了我的问题:) – RightSideOfWrong 2011-05-06 08:11:10