在发送HTTP标头后,服务器无法追加标头
本文关键字:服务器 追加 HTTP | 更新日期: 2023-09-27 18:21:51
下面显示的是我创建CSV文件后的代码,我想下载该文件,所以我使用下面的代码。但其在"Response.AddHeader("Content disposition","attachment;filename="+fileCSV+"''");"位置。它正在下载,但浏览器没有重定向到同一页面。
string[] header = { "Error Occurred On", "Controller Name", "Action Name", "Exception Occurred", "Stack Trace Description", "InnerException Occurred", "Stack Trace InnerException Occurred " };
代码:
DataTable dt = new DataTable();
for (int e = 0; e < header.Length; e++)
{
dt.Columns.Add(header[e], typeof(string));
}
StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));
dt.DefaultView.RowFilter = "[Exception Occurred] LIKE '%" + keyword + "%'";
DataTable dtFilter = new DataTable();
dtFilter = dt.DefaultView.ToTable();
foreach (DataRow row in dtFilter.Rows)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(",", fields));
}
System.IO.File.WriteAllText(fileCSV, sb.ToString());
byte[] bytes = Encoding.ASCII.GetBytes(sb.ToString());
if (bytes != null)
{
Response.Clear();
Response.ContentType = "text/csv";
//Response.AddHeader("Content-Length", bytes.Length.ToString());
Response.AddHeader("Content-disposition", "attachment; filename=" + fileCSV);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
下载文件后无法重定向,您正试图执行两个只能执行第一个操作的操作。
我建议您在一个新的(弹出)窗口中下载该文件,并在需要时重定向主页。
编辑:-
您可以通过使用window.open.
打开文件下载操作来强制下载
示例:-
<a href="Action/RedirectPage" data-file="Action/DownloadCVS" class="file-download">Download File</a>
<script>
$(function() {
$('a.file-download').click(function() {
window.open($(this).data('file'));
});
});
</script>
在HTTP中,每个请求都有一个响应。所以这个错误意味着您已经发送了一些要响应的内容。
不确定您是否仍在寻找答案,而不是响应。Flush&Response.End,试试HttpContext.ApplicationInstance.CompleteRequest()。它解决了我在尝试直接写入请求流时遇到的很多问题。
几分钟前,我在下载文件时遇到了同样的问题。我想分享对我有用的东西。
最重要的补充:
Response.ClearHeaders();
在行动的开始结果中。
老实说,我在这里读到的https://www.codeproject.com/Questions/1038819/How-to-resolve-this-error-Server-cannot-append-hea