0
我有一对夫妇的网页API控制器的功能,看起来像下面的.NET Web API - ArrayBuffer乱用其他的API调用
[HttpGet]
[Route("GetCycle")]
public HttpResponseMessage GetCycle(string type) {
try
{
Cycle oCycleClass = Data.GetCycle(type);
return Request.CreateResponse(oCycleClass);
}
catch (Exception ex)
{
return Request.CreateErrorResponse(System.Net.HttpStatusCode.BadRequest, ex.Message);
}
}
这是另一个控制器如预期那样工作。
[HttpPost]
[Route("GetDataDownload")]
public HttpResponseMessage GetDataExport([FromBody]DataObject objectData)
{
try
{
byte[] excelData = Data.GetDataExport(objectData);
String timeStamp = DateTime.Now.ToString("yyyy-MM-dd HH mm ss");
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new ByteArrayContent(excelData);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = "DataExport - " + focalData.User.ID + " - " + timeStamp + ".xlsx";
return response;
}
catch (Exception ex)
{
return Request.CreateErrorResponse(System.Net.HttpStatusCode.BadRequest, ex.Message);
}
}
的错误出现后,我执行GetDataExport
功能后,任何其他控制器。它看起来像HttpResponseMessage
得到某种程度上损坏。
例如:
1.执行GetCycle
- 结果:成功
2.执行GetDataExport
- 结果:成功
3.执行GetCycle
- 结果:失败
GetDataExport
功能如下
public static byte[] GetDataExport(DataObject dataObject)
{
DataTable view = Common.ConvertToDataTable<View>(dataObject.Views);
string filter = Common.ConvertFiltersToSQLStatement(dataObject.Filters);
DataSet ds;
if (dataObject.DownloadWithFilters)
{
ds = InterfaceDataClass.GetEmployees(dataObject.CycleId, view, filter, 1, 0, true);
}
else
{
ds = InterfaceDataClass.GetEmployees(dataObject.CycleId, view, string.Empty, 1, 0, true);
}
using (ExcelPackage pck = new ExcelPackage())
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Employees");
//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(ds.Tables[0], true);
//Format the header column
using (ExcelRange rng = ws.Cells["A1:BB1"])
{
rng.Style.Fill.PatternType = ExcelFillStyle.Solid;
rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(122, 122, 122));
rng.Style.Font.Color.SetColor(Color.WhiteSmoke);
}
return pck.GetAsByteArray();
}
}
的ExcelPackage
来自一个库调用EPPlus
是否有任何错误记录?另外,请确保您仔细关闭资源。 –
什么是关闭资源的正确方法? –
我想你正在访问一些文件流,请在那种情况下关闭它。此外,如果您可以共享代码的GetDataExport方法,这将是有益的 –