2011-01-13 5 views
2

Hier ist der Code, den ich verwende:Mit HtmlPage.Window.Navigate in Silverlight öffnet Windows schließt dann sofort in 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"); 

Was ist in der Produktion geschieht nur (Works lokal und in einer Testumgebung) Das Fenster wird angezeigt und dann sofort geschlossen. Auch dies funktioniert lokal in meiner Entwicklungsumgebung und dann in einer internen Testumgebung.

Die aufgerufene Seite erstellt eine dynamische PDF-Datei, die auf dem Bildschirm angezeigt wird. Hier ist der Code, der das Antwortobjekt ändert:

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

Dann schreibt das tatsächliche PDF-Objekt in den Ausgabestream.

Wenn ich die URL in einem neuen Tab in IE öffnen, kann ich das Dokument wie gewünscht anzeigen, es ist nur über die Schaltfläche Drucken in Silverlight und nur in IE. Ich habe dies in Chrome versucht und es funktioniert gut, habe Firefox nicht getestet.

Es gibt keinen Popup-Blocker, das Fenster wird angezeigt und verschwindet. Ich habe die Sicherheitseinstellungen überprüft und die Domain zu meiner Liste vertrauenswürdiger Sites hinzugefügt. Suchen Sie nach anderen Vorschlägen.

+0

Ich habe das gleiche Problem. Ich habe festgestellt, dass das Hinzufügen der Produktions-Site zur Sicherheitszone "Lokales Intranet" funktioniert. Das Hinzufügen zu vertrauenswürdigen Sites erfolgt nicht. Aber es ist definitiv ein Sicherheitsrisiko. Ich komme zurück, wenn ich mehr erfahren habe .. –

Antwort

0

Ich beantworte meine eigene Frage, weil ich eine geeignete Problemumgehung gefunden habe.

ersetzt ich die Linie

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

Mit

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

Anstatt also präsentiert dem Benutzer ein Öffnen/Speichern Dialog direkt im Browser öffnet, wenn sie eine vordefinierte PDF-Viewer haben . Sie können dann die Datei aus dem Internet Explorer drucken oder speichern.

Verwandte Themen