2011-07-21 50 views
1

我有一個Silverlight 4應用程序,我試圖顯示PDF。我的方法是在Silverlight應用程序中單擊按鈕,使用HtmlPage.Window.Navigate打開一個新的瀏覽器窗口。該新瀏覽器窗口導航到的URL是一個ASP.Net Web窗體頁面,通過SSRS SOAP API調用SQL Reporting Services。這個調用返回一個字節數組,Web表單,然後用下面的代碼流回到瀏覽器:通過Silverlight應用程序在IE8中顯示PDF的問題

 byte[] report = SSRSRenderReport(reportPath, primaryId); 

     Response.ClearContent(); 
     Response.ClearHeaders(); 
     Response.AddHeader("cache-control", "must-revalidate"); 
     Response.AddHeader("content-length", report.Length.ToString()); 
     Response.Buffer = true; 
     Response.ContentType = "application/pdf"; 
     this.Response.AddHeader("Content-Disposition", "inline; filename=whatever.pdf"); 
     Response.BinaryWrite(report); 
     Response.Flush(); 
     Response.End(); 

這所有正在運行的IE9從和Firefox的應用程序時,工作得很好。但是,當從IE8運行應用程序時,新的瀏覽器窗口會在按鈕點擊後顯示,然後立即關閉,而不會顯示PDF或提示打開/保存PDF。

如果我將Silverlight從圖片中取出並直接瀏覽呈現報表的URL,那麼它可以正常工作,PDF將顯示在瀏覽器中。我在使用HTTPS時看到了幾篇描述這個問題的文章,但是我現在只使用HTTP。

有關如何解決此問題的任何建議將不勝感激。

回答

0

我們發現這個問題的根源在於我們試圖從viewmodel而不是視圖事件處理程序顯示我們的彈出窗口。最終我們選擇引入一個新的視圖,其中包含一個指向PDF URL的超鏈接。這工作,併爲我們,一個可以接受的解決方案。