2012-04-12 13 views
1

hier ist der Code, den ich habe:Response.AddHeader Befestigung funktioniert nicht

   Response.Clear(); 
       Response.AddHeader("content-disposition", "attachment; filename=file.xlsx"); 
       Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
       Response.BinaryWrite(pck.GetAsByteArray()); 
       Response.End(); 

Das Problem ist, dass, wenn dieser Code ausgeführt wird (On-Taste klicken) Ich weiß nicht, eine Datei zum Herunterladen in meinem Browser (versuchte in Chrome \ IE).

Pck ist eine Excel-Datei (generiert mit epplus Bibliothek). Ich weiß nicht einmal, wie ich diesen Teil des Codes debuggen soll. es tut nichts.

Hier ist der Fehler ich in meinem Browser bekommen:

Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: Die Nachricht vom Server empfangen kann nicht analysiert werden. Häufige Ursachen für diesen -Fehler sind, wenn die Antwort durch Aufrufe von Response.Write(), Antwortfilter, HttpModules oder Serverablaufverfolgung geändert wird.

Details: Fehler beim Parsen in der Nähe von 'PKX @ π '.

Antwort

2

Ich glaube, Sie ein Update-Panel verwenden. Sie können eine Datei nicht herunterladen, wenn Sie ein asynchrones Postback durchführen. Fügen Sie die Schaltfläche hinzu, die die Datei als Postback-Trigger für das Update-Panel herunterlädt.

+1

Ich denke, Ramesh ist wahrscheinlich richtig. Update-Panels kommunizieren mit einem Pipe-separierten Format, das Informationen zu zu aktualisierendem Steuerelement, zu aktualisierendem Inhalt usw. enthält. Wenn Sie die Antwort ändern, kann der clientseitige Update-Panel-Code die Antwort nicht analysieren und Sie erhalten einen ähnlichen Fehler Gesendet. –

+0

Ja, sieht so aus, ist das Problem. Ich konnte es reparieren, indem ich postback Kontrolle registrierte: ScriptManager.GetCurrent (this.Page) .RegisterPostBackControl (this.button1); – user194076

0

Sie sind auf dem richtigen Weg. Ich denke, dass Sie ein paar Zeilen sind vermisst:

Response.Clear(); 
Response.AddHeader("content-disposition", "attachment; filename=file.xlsx"); 
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
Response.BinaryWrite(pck.GetAsByteArray()); 
Response.Flush(); 
Response.Close(); 
Response.End(); 
Verwandte Themen