Ich habe eine Aktion, die ein .pdf
Dokument generiert und es zurückgibt, um es inline im Browser anzuzeigen. Das Problem besteht darin, dass der Browser eine zweite Anfrage an die gleiche Aktion stellt, die dazu führt, dass die App bei jeder Generierung der Datei zweimal ausgeführt wird. Das habe ich.MVC 4 - Das Zurücksenden der PDF-Datei aus der Aktion veranlasst den Browser, die Aktion zweimal zu laden
public ActionResult GeneratePDF(string id, int rp = 1, string info = "")
{
var doc = _service.GeneratePDF(id, rp, info);
var cd = new System.Net.Mime.ContentDisposition
{
FileName = $"{id}.pdf",
Inline = true,
Size = tickets.Length
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(doc, MimeMapping.GetMimeMapping(cd.FileName));
}
_service.GeneratePDF
erzeugt das PDF im Speicher iTextSharp und MemoryStream
Objekt mit einer Aktion byte[]
Die GeneratePDF Rückkehr von einem Link auf eine andere Seite aufgerufen wird:
<a href="SomeController/GeneratePDF/1234?rp=1" target="_blank">View Document</a>
Das einzige, was Auf dieser neuen Browser-Registerkarte wird das Dokument .pdf
angezeigt.
Ich habe auf verschiedenen Browsern (Chrome, IE, FF) versucht und das Ergebnis ist das gleiche, die .pdf
Datei wird ordnungsgemäß auf dem Browser angezeigt, aber es erfordert einen zweiten Aufruf der gleichen Aktion. Irgendwelche Ideen, wie verhindert werden kann, dass der Browser die Aktion zweimal aufruft? Fehle ich etwas an den Headern?
Edit: Browser Verhalten erste Anforderung ist normal und vervollständigt mit keinem Problem. Die zweite Aktion führt die Aktion aus, aber der Browser (oder etwas anderes) bricht diese Anfrage ab.
die Aktion angezeigt wird uns nicht identifizieren helfen, warum es zweimal genannt zu werden. Das ist, als würde man uns eine Kugel zeigen und uns bitten, den Schützen zu identifizieren! – DavidG
@DavidG Welche anderen Informationen sollte ich bereitstellen? – Mike
Aktion wird zweimal ausgeführt, Datei wird jedoch nur einmal generiert. Ist das richtig? –