2011-01-13 47 views
2

這裏是我正在使用的代碼:在Silverlight Windows中使用HtmlPage.Window.Navigate打開,然後立即關閉IE中

System.Windows.Browser.HtmlPopupWindowOptions pop = new System.Windows.Browser.HtmlPopupWindowOptions(); 
pop.Directories = false; 
pop.Menubar = false; 
pop.Status = false; 
pop.Toolbar = false; 
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(@"http://" + App.Host + App.VirtualDirectory+ "/Print.aspx?ID=" + ID, UriKind.Absolute), "_blank", "location=no, toolbar=no, status=no"); 

會發生什麼事是僅生產(本地工作,並在測試環境中)該窗口顯示,然後立即關閉。再次,這在我的開發環境中可以正常工作,然後在內部測試環境中正常工作。

被調用的頁面創建一個動態PDF以顯示在屏幕上。這裏是修改響應對象的代碼:

context.Response.ClearHeaders(); 
context.Response.ClearContent(); 
context.Response.AddHeader("Content-Disposition", "attachment;filename=print.pdf"); 

那麼實際PDF對象寫入到輸出流。

如果我在IE中的新標籤中打開URL,我可以按照預期查看文檔,只能通過Silverlight中的打印按鈕並且只能在IE中打開。我已經在Chrome中試過了,它工作正常,沒有測試Firefox。

沒有涉及彈出式窗口攔截器,窗口顯示然後消失。我檢查了安全設置,並將該域添加到受信任的站點列表中。尋找任何其他建議。

+0

我有同樣的問題。我發現將生產站點添加到安全區域「本地Intranet」將使其工作。將它添加到受信任的站點不會。但它確實是一個安全問題。如果我發現更多,我會回來。 – 2011-02-04 08:57:39

回答

0

我回答我自己的問題,因爲我找到了一個合適的解決方法。

我取代了線

context.Response.AddHeader("Content-Disposition", "attachment;filename=print.pdf"); 

隨着

context.Response.ContentType = "application/pdf"; 

因此,而不是用它直接打開在瀏覽器中打開/保存對話框提示用戶,如果他們有一個預先定義的PDF閱讀器。然後他們可以從Internet Explorer打印或保存該文件。