从 ashx 文件导出到 Excel

Export to Excel from ashx file

我正在尝试从 jquery 事件调用的 .ashx 文件导出到 excel。我的数据准备正确。但我没有提示保存。如果我使用 asp.net 单击事件,它会完美运行,但是从 jquery 开始,数据会返回到调用 jquery 事件。由于需要很长时间才能解释的原因,我必须使用 ashx 代码。我需要做什么?

context.Response.ClearHeaders();
context.Response.Clear();
context.Response.ClearContent();
string attachment = "attachment; filename='UserRolesPermissions.xls'";
context.Response.AddHeader("content-disposition", attachment);
context.Response.ContentType = "application/vnd.ms-excel";
context.Response.Write(excelData);
context.Response.Flush(); 
context.ApplicationInstance.CompleteRequest();

我尝试过使用 Flush、End 和 CompleteRequest 的各种组合。结果相同(结束错误)。

谢谢。

您似乎漏掉了 content-length header。这可能会有所作为。

//make sure the data is a byte array
byte[] bin = excelData;

context.Response.ClearHeaders();
context.Response.Clear();
context.Response.Buffer = true;
context.Response.ContentType = "application/vnd.ms-excel";
context.Response.AddHeader("content-disposition", "attachment; filename=\"UserRolesPermissions.xls\"");

//this could help
context.Response.AddHeader("content-length", bin.Length.ToString());
context.Response.OutputStream.Write(bin, 0, bin.Length);

context.Response.Flush();
context.ApplicationInstance.CompleteRequest();