Frage

Dieser Code wird immer meine aspx Seite Last zweimal machen. Und das hat nichts mit AutoEventWireup zu tun.

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "inline;filename=data.pdf");
Response.BufferOutput = true;
byte[] response = GetDocument(doclocation);
Response.AddHeader("Content-Length", response.Length.ToString());
Response.BinaryWrite(response);
Response.End();

Dieser Code wird nur meine Seite zu laden, machen einmal (wie es sein sollte), wenn ich einige Dummy-Werte codieren.

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "inline;filename=data.pdf");
Response.BufferOutput = true;
byte[] response = new byte[] {10,11,12,13};
Response.AddHeader("Content-Length", response.Length.ToString());
Response.BinaryWrite(response);
Response.End();

Ich habe erhöhte auch die Anforderungslänge für eine gute Maßnahme in der Datei web.config.

<httpRuntime executionTimeout="180" maxRequestLength="400000"/>

Immer noch nichts. Wer sieht etwas, was ich nicht tun?

War es hilfreich?

Lösung

Haben Sie eine Lösung für dieses noch nicht gefunden? Ich das gleiche Problem haben, ist mein Code so ziemlich ein Spiegel von Ihnen. Hauptunterschied ist mein pdf in einem IFrame gehostet.

So interessante Hinweise habe ich gefunden: Wenn ich einen Word.doc streamen zurück es wird nur einmal geladen, wenn pdf es zweimal geladen wird. Auch habe ich ein anderes Verhalten von verschiedenen Client-Desktops zu sehen. Ich denke, dass Adobe Version etwas damit zu tun haben kann.

Update:

In meinem Fall war ich die Einstellung der Httpcacheability zu NoCache. In dieser Überprüfung, würde bewirken, dass jeder der nicht Client-Cache-Optionen, um den doppelten Download des pdf. Nur es überhaupt nicht (Standard: Private) Einstellung oder explizit zu öffentlichen oder privaten Kontext würde das Problem beheben, alle anderen Einstellungen die doppelte Last des Dokuments dupliziert.

Andere Tipps

GetDocument(doclocation);

Auch diese Methode irgendwie zurückgibt Code Redirection? oder sie können einen Iframe oder img für dynamische Inhalte sein?

Wenn ja:

Generell könnte die Steuer genannt, weil der URL Antwort zweimal bekommen. Erstens macht es den Inhalt. Danach Ihr Browser versucht, die Tag (iframe, img) Quelle zum Herunterladen, die tatsächlich ein dynamischer Inhalt, die generiert wird. So macht es eine weitere Anforderung an den Webserver. In diesem Fall eines andere Seite Objekt geschaffen, die einen anderen Ansichtszustand hat, weil es eine andere Anfrage ist.

Schnell Vermutung: Könnte es in diesem Stadium im Lebenszyklus Seite sein, dass, dass die Klasse enthält GetDocument () wurde bereits durch die Garbage Collection gegangen? Der ASP.NET-Worker-Prozess muss dann die Seite, um neu zu laden wieder diese Methode zu lesen?

Haben Sie es in der Page_Load versucht? und warum ist getDocument eine statische Methode?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top