2011-05-03 77 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