问题描述
我正在使用Asp.Net core 3.1
我已经实现了通过将数据写入HttpContext Response来下载Excel / CSV文件的功能,并且能够下载该文件,但是出现错误日志
[ERR] An unhandled exception has occurred while executing the request. (48a46595)
system.invalidOperationException: The response headers cannot be modified because the response has already started.
下面是代码。
public static class IWorkBookExtensions
{
public static void WriteExcelToResponse(this IWorkbook book,HttpContext httpContext,string templateName,ILogger<ExportDataController> _logger)
{
try
{
var response = httpContext.Response;
response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
if (!string.IsNullOrEmpty(templateName))
{
var contentdisposition = new Microsoft.Net.Http.Headers.ContentdispositionHeaderValue("attachment");
contentdisposition.SetHttpFileName(templateName);
response.Headers[HeaderNames.Contentdisposition] = contentdisposition.ToString();
}
book.Write(response.Body);
}
catch(Exception ex)
{
_logger.LogError(ex.InnerException.ToString() + ex.Message);
}
}
}
下面是错误日志
2020-10-13T14:45:17.1452752-05:00 80003b-00-fc00-3f-84967bb [ERR] An unhandled exception has occurred while executing the request. (48a46595)
system.invalidOperationException: The response headers cannot be modified because the response has already started.
at Microsoft.AspNetCore.httpsys.Internal.HeaderCollection.ThrowIfReadOnly()
at Microsoft.AspNetCore.httpsys.Internal.HeaderCollection.set_Item(String key,StringValues value)
at Microsoft.AspNetCore.Http.DefaultHttpResponse.set_ContentType(String value)
--- End of stack trace from prevIoUs location where exception was thrown ---
2020-10-13T14:45:17.1546662-05:00 80003b-00-fc00-3f-84967bb [WRN] The response has already started,the error page middleware will not be executed. (e1dd4c0d)
2020-10-13T14:45:17.2073595-05:00 880003b-00-fc00-3f-84967bb [ERR] Connection ID ""18300129210426"",Request ID ""80003b-00-fc00-3f-84967bb"": An unhandled exception was thrown by the application. (bf3147)
system.invalidOperationException: The response headers cannot be modified because the response has already started.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)