2017-10-11 56 views
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

+0

是否有任何错误记录?另外,请确保您仔细关闭资源。 –

+0

什么是关闭资源的正确方法? –

+0

我想你正在访问一些文件流,请在那种情况下关闭它。此外,如果您可以共享代码的GetDataExport方法,这将是有益的 –

回答

0

的API没有错误可言。问题在于如何调用和执行API。